Javascript 具有作用域问题的匿名函数调用
我肯定以前有人问过这个问题,但我不知道该搜索什么 所以我想用一个与单击的项对应的字符串调用函数,但我只想将任何新项添加到字符串数组中Javascript 具有作用域问题的匿名函数调用,javascript,closures,Javascript,Closures,我肯定以前有人问过这个问题,但我不知道该搜索什么 所以我想用一个与单击的项对应的字符串调用函数,但我只想将任何新项添加到字符串数组中 var menuList = ["overview", "help", "search"]; var functionCalls = [ function() { toggleMenu(menuList[0]); }, function() { toggleMenu(menuList[1]); }, function() { toggleMenu(me
var menuList = ["overview", "help", "search"];
var functionCalls = [
function() { toggleMenu(menuList[0]); },
function() { toggleMenu(menuList[1]); },
function() { toggleMenu(menuList[2]); },
];
在循环中这样使用:$(“某物”)。单击(functionCalls[i])
这就是我想要做的(但显然不行):
如何创建一个匿名函数,该函数接受基于变量的值,但不保留对变量的引用?您可以使用这样的IIFE:
for (var i=0; i<menuList.length; i++) {
!function( index ) {
$("something").click(function() {
toggleMenu( menuList[index] );
});
}( i );
}
用于(var i=0;我不使用for…in
在JavaScript中迭代数组。而是使用一个索引变量和一个简单的for
循环。这个问题有很多重复的地方。这是JavaScript中一个非常常见的陷阱。这就是为什么我注意到我以前肯定有人问过它。我只是对JS不够熟悉,无法回答知道如何正确处理它,或者搜索什么。别难过-我不是有意批评。很难找到重复的,因为相同的基本问题以许多不同的方式表现出来。归结起来,JavaScript的作用域只是在函数级别,所以像Sirko发布的技巧是必要的。这就是为什么我在找的。谢谢!
for (var i=0; i<menuList.length; i++) {
!function( index ) {
$("something").click(function() {
toggleMenu( menuList[index] );
});
}( i );
}