Javascript调用函数作为数组元素
javascript calling function as array element
我在一个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
。
相关文章:
- 在函数中添加数组元素的数值
- 如何在javascript中使用click函数选择数组元素
- JavaScript,数组和函数 - 只有数组的最后一个元素有效
- Javascript-函数获取数组元素参数未定义/为null
- 将数组元素传递给bob.js formatString函数
- 将jQuery事件函数应用于新的Knockout.js数组元素
- 通过javascript函数取消设置php数组元素
- Emscripten:调用修改数组元素的 C 函数
- JavaScript 数组映射函数不会更改字符串中的元素
- Ajax 获取函数数组元素
- js函数未在IE 8中的数组元素中运行
- 将数组元素的数组传递给函数
- 使用递归函数删除所有重复的数组元素
- 如何使用JS数组元素定义使用参数对函数的调用
- 在javascript split函数中拆分数组元素
- 从Javascript函数访问PHP数组元素
- angular-Js:不能在同一个控制器的不同函数调用中访问数组元素
- Ruby在遍历函数时尝试存储数组元素
- 在Knockout可观察数组订阅函数中,可以确定添加或删除了哪些元素吗?
- 函数定义中使用的命名数组元素