javascript 调用函数作为数组元素

javascript calling function as array element

我在一个 Toptal youtube 视频中看到了这个示例,该视频使用的语法在 Chrome 中不会 运行,除非我遗漏了什么。这个例子出现在这里 (JavaScript closure inside loops – simple practical example) 并且使用相同的语法。为什么这不是 运行ning for me/does 下面指定的行包含有效语法?

var x, y, funcs = [];

for(x=0; x<5; x++){

    (function(){
        var r = x;
        funcs.push(function(){
        console.log(r);
        });

    });
};  
for (var y=0; y<5; y++){
    funcs[y]();  //<< is this valid JS syntax/why is it not working for me?
};

您需要在第一个 for 循环 自执行 中创建此匿名函数,方法是在定义后添加一对括号 ()

(function(){
    var r = x;
    funcs.push(function(){
    console.log(r);
    });

})();

如果没有这个,您将在第一个循环中声明一个函数,该函数从未执行,因此,永远不会将任何内容推入您的数组。

在你的第一个循环之后,做一个 console.log(funcs.length) 你会得到一个 0 因为你的数组没有元素。

您当前的代码将为您提供 uncaught type error: funcs[0] is not a function,这是因为 funcs[0]undefined