我想使用局部变量作为全局变量,我被告知这样做的方法是在函数外创建变量,如下所示:
var foo = null;
function bar() {
foo = 3;
}
console.log(foo);
然而,foo记录为null,而不是3.这是我能想到的最简单的例子,但主要是我希望能够在整个脚本中使用我在函数中创建的变量中的数据。
我做错了什么?
Ajax请求中的同样问题:
var status = null;
.ajax({
url: myUrl,
success: function (data) {
status = data.status; //returns a string
console.log(status); // it works, I get the string
},
dataType: 'jsonp'
});
console.log(status); // still null
答案 0 :(得分:3)
你需要先调用这个函数。
var foo = null;
function bar() {
foo = 3;
}
bar();
console.log(foo);
这里最好的办法是调用一个在ajax运行后记录数据的函数。在这个例子中,我创建了一个名为logit()
的函数,它在ajax请求状态中被调用。
var status = null;
$.ajax({
url: myUrl,
success: function (data) {
status = data.status; //returns a string
console.log(status); // it works, I get the string
logit();
},
dataType: 'jsonp'
});
function logit(){
console.log("logit(): " + status);
}
您获得null的原因是因为这是您的代码运行的顺序:
status
设为null status
仍然是null
因为成功回调还没有运行status
设置为data.status