【发布时间】:2015-09-30 05:58:27
【问题描述】:
我想使用局部变量作为全局变量,有人告诉我这样做的方法是在函数外部创建变量,如下所示:
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
【问题讨论】:
-
这很简单。只需要多想一点。如果您调用 bar() 函数,则 foo 值将被更新(null 为 3),否则它将显示为 null。
-
嘿,谢谢你的回答,我的笨蛋看不出这么简单的事情。但是 Ajax 问题呢?
-
状态值将为空,如果你在 ajax 调用之外得到它。如果你想跳出ajax,这意味着你想通过状态值来实现任何其他的东西,所以你是否必须调用@Get Off My Lawn 指定的函数,或者你也可以使用回调。在这两种情况下,它都会被调用。
-
只需尝试一件事——假设 abc() 在单独的函数中添加 ajax 调用编码。在每个函数之外使用“var status = null”,就像全局一样。并在单独的函数假设 abc2() 中使用“console.log(status);”。当您想使用该状态值时,请调用该函数 abc2() 否则不要。我试过它在这里工作。希望对您有所帮助。
标签: javascript variables scope global local