【发布时间】:2012-11-21 06:14:17
【问题描述】:
我正在尝试更改闭包中变量的值:
var myVariable;
$.ajax({
//stuff....
success:function(data) {
myVariable = data;
}
});
这不起作用,因为myVariable 对闭包不可见。如何更改此代码以使myVariable 的值发生变化?
【问题讨论】:
-
这不是真的。根据定义,如果它是全局的,那么它可以在所有范围内访问。当然,如果有一个名为
myVariable的局部变量,那么它将被修改而不是全局版本。如果它真的是全球性的,您可以通过window.myVariable访问它。 -
您的示例没有说明为什么它在成功回调的范围内不可见。唯一可以隐藏它的是在更近的范围内有一个同名的变量会隐藏它。
-
嗯,我认为变量没有改变,因为 ajax 不是同步的。不知道如何使它同步
-
@user1811367:不要。了解如何使用回调。
-
myVariable is 已更新(在 Firebug 中查看以查看)。但不是在你认为应该的时候。看看我的回答。
标签: javascript closures