用javascript更新事件函数中的全局变量
Update global variable in event function in javascript
我想以前有人问过这个问题,但我找不到答案,也许我缺乏描述问题的好词。
我有一个循环,在这个循环中,每次迭代我都会创建一个对象,并添加一个事件侦听器,该事件侦听器的回调函数使用创建的对象。
for(var i in items)
{
x = new SomeClass(i)
someAPI.event.addListener(i, 'click', function(ev){
x.someMethod()
});
}
发生了什么,我理解为什么,事件函数定义中的变量x
只有在事件被触发时才会求值,而x
等于受此名称影响的最后一个值,即上次迭代时给出的值。
我想知道如何在事件函数定义中获得所需的行为,即在循环中获得x
的当前值。谢谢
for(var i in items) {
(function(j) {
var x = new SomeClass(j);
someAPI.event.addListener(j, 'click', function(ev){
x.someMethod()
});
})(i);
}
关键是var
关键字,在每次迭代中创建一个新的类实例
我添加IIFE以保持i
的值不变,并在每次迭代中创建一个新的范围。
相关文章:
- 在javascript函数中设置全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 创建要在其他函数中使用的全局变量
- 函数中的innerHTML(全局变量?)
- 全局变量只能由第一个函数访问
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 更改函数内部的全局变量而不调用它
- 如何制作全局javascript函数和变量
- 改进js代码以删除全局变量和函数
- 调用函数后如何重置全局变量
- 无法在函数中检索全局变量的值
- 将全局变量传递给自调用函数或“IIFE”的目的
- 保留 JQuery Vars 用于另一个函数(全局变量?)
- 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量
- 删除两个函数使用的全局变量
- 如何将socket.on中函数的值保存为全局变量
- angular/javascript无法识别函数内部的全局变量
- Javascript测试存根全局变量函数
- 在JavaScript中添加一个全局变量/函数(特别是NativeScript)
- Javascript从本地向全局变量函数添加行