循环内部的动态函数:i var不可见
Dynamic function inside loop: i var is not visible
查看以下代码
//btns is an array passed as a parameter to a function
for(var i = 0, b; b = btns[i]; i++) {
b.handler = function () {
var a = btns[i].some_field; //undefined
//the same for "b.some_field;"
};
}
为什么btns[i]
未定义?
PS如果这很重要的话,代码会在extjs按钮上添加click处理程序。
之所以会发生这种情况,是因为当调用内部函数时(即循环完成后),i
的值将是btns.length
,因此btns[i]
的值将为undefined
。
你需要像这样关闭i
的值:
b.handler = function(i) {
return function() {
var a = btns[i].some_field;
}
}(i);
需要注意的是,尽管变量名称相同,但它们是不同的变量;即内部变量遮蔽外部变量,从而"固定"该值。
for(var i = 0, b; b = btns[i]; i++) {
b.handler = function () {
var a = this.btns[i].some_field;
//the same for "b.some_field;"
};
}
在函数的旁边给出"this",我们必须使用"this"来指向
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 控制台返回var不是't定义,但它是
- 从var向代码隐藏函数传递值
- 如何通过引用var Using DataTables来进行分页或排序
- 调用函数内部的函数
- jQuery语法添加了var
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将具有文本类型值的var放入jQuery函数中
- 在jquery函数内部设置来自jquery函数的var;t运行
- 一个'var'在函数内部声明
- 如何在函数内部为jquery工具提示调用不同的var字符串
- JavaScript 在内部函数中保留一个 var
- JavaScript 面向对象的调用函数内部函数或调用函数 insede var
- 循环内部的动态函数:i var不可见
- 如何从ng repeat内部获取var并将其传递给控制器,而不是将其传递回ng repeat
- 改变“;var”;在创建新实例的构造函数闭包内部
- 是否可以使用"var"将函数绑定到窗口?从函数内部
- 从外部(即定义闭包的作用域)访问闭包内部定义的var
- “var”在 npm 中未定义为内部或外部命令
- JS var内部查询不工作时串在一起