jquery嵌套函数中的全局变量
Global Variables in jquery nested functions?
在jquery嵌套函数中是否可以访问全局变量?我有一个问题无法解决。一个对象属性更改,另一个对象不
位置是这个
for(var key in object) {
if(object[key].boolean) {
alert(object[key].value)
$.get(url, "data", function(data) {
if(parseInt(data) > object[key].int) {
alert(object[key].value);
object.int = data;
}
});
}
}
我遇到的问题是对象[key].value没有保持其值。两个警报都有不同的值,所以我不能在嵌套的返回函数中使用它。对象[key].int也会得到正确的更新,这更令人困惑。对象被声明为全局变量。
如有任何建议,我们将不胜感激。
只有在get成功后才调用匿名包装,它不会立即调用,看起来像这样的情况
是否从匿名包装返回函数?
你收到最后一件物品的内部关闭通知了吗?
var object = {
x:10,
y:20,
z:30
};
for(var key in object) {
console.log("outside closure",object[key]);
$.get("/echo/html?data=asdf" ,(function(keyAlias) {
return function(data) {
console.log("inside closure",object[keyAlias],data);
//your logis goes here
}
})(key));
}
Fiddle:http://jsfiddle.net/eTdv5/1/(检查控制台日志)
我想,解释整件事并不必要,你可以查看上面提到的SO帖子,如果有任何不清楚的地方,请询问。
解释:
首先,key = 10
$.get("/echo/html?data=asdf" , <at this place key is 10> );
(function(key) {})(key)
就像调用display(key)
,假设您正在立即编写显示函数,并用参数key
调用它。
return function(data) {};
将返回一个函数,实际上就像(function(key) {})(key)
被这个返回的函数替换一样。
这将给你一个介绍,现在范围是如何管理的:
当for in
循环通过object
时,key
将更改其值,但我们创建的每个回调函数都有自己的keyAlias
,与使用(function(key) {})(key)
装入回调函数时key
的值相对应
相关文章:
- 在javascript函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 创建要在其他函数中使用的全局变量
- 函数中的innerHTML(全局变量?)
- 全局变量只能由第一个函数访问
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 更改函数内部的全局变量而不调用它
- 如何制作全局javascript函数和变量
- 改进js代码以删除全局变量和函数
- 调用函数后如何重置全局变量
- 无法在函数中检索全局变量的值
- 将全局变量传递给自调用函数或“IIFE”的目的
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 删除两个函数使用的全局变量
- 如何将socket.on中函数的值保存为全局变量
- angular/javascript无法识别函数内部的全局变量
- Javascript测试存根全局变量函数
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- Javascript从本地向全局变量函数添加行