Javascript调用函数作为数组元素

javascript calling function as array element

本文关键字:数组元素 函数 调用 Javascript      更新时间:2023-09-26

我在一个Toptal youtube视频中遇到了这个例子,它使用的语法不会在Chrome中运行,除非我错过了一些东西。这个例子出现在这里(JavaScript闭包内循环-简单的实际例子),使用了相同的语法。为什么这不能为我运行/下面指示的行包含有效的语法吗?

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-loop 中自动执行

(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