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
。
我在一个 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
。