我有以下代码
function f () {
var jsonvar = get (...);
console.log (jsonvar);
$.ajax({
type: "POST",
url: transactUrl,
dataType: "xml",
success: function (result) {
console.log (jsonvar);
}
});
}
function get (param) {
return JSON.search (...).toString ();
}
我将得到结果:
"someValue"
undefined
但为什么jsonvar
在$.ajax()
函数内被“遗忘”?未使用JSON定义的变量将具有相同的值。他们之间有什么区别? Javascript的typeof
会为这两个人返回String
。
答案 0 :(得分:2)
我认为你的代码中某处有一些错误(可能)会导致"无声错误"。看到这个小提琴; http://jsfiddle.net/9k1f6dpb/
function f () {
var jsonvar = get();
console.log (jsonvar);
$.ajax({
type: "GET",
url: 'http://updates.html5rocks.com',
success: function (result) {
console.log(jsonvar);
}
});
}
function get (param) {
return JSON.search({'a': 1}, '//a').toString();
}
f();
这表明设置正常,变量不会被遗忘"一路上。尝试添加'使用strict' ...它可能有助于在调试时抛出有用的错误。
function f () {
'use strict';
...
答案 1 :(得分:0)
我发现了问题:
ii = "someString";
function f () {
console.log(ii);
var ii = 5;
console.log(ii);
}
f();
给出输出:
undefined
5
因此在函数内部定义了相同的变量。但这对我来说是新的,我认为变量将在第一次定义时存在。