首页 > Javascript的函数不能存在数组中吗?

Javascript的函数不能存在数组中吗?

上代码:

 var funcs = new Array();

 function printHello() {
   console.log("Hello!");
 }

 function printFine() {
   console.log("Fine!");
 }

 funcs.push(printHello);
 funcs.push(printFine);

 console.log(funcs.length);

 for(func in funcs) {
   // Uncaught TypeError: Property 'func' of object [object Object] is not a function
   func();
 }

浏览器载入的时候,报的错已经标记在注释里。
请问放在数组中的函数应该怎么调用?


for (var func in funcs) {
    console.log(func) // 输出 0, 1
}

正确的方式是:
for (var func in funcs) {
    funcs[func]();
}

for (func of funcs) {
    func();
}

chrome 測試通過。


for(index in funcs) {
    funcs[index]();
}

for in循环的循环变量是对象的key,而不是它的value。


Javascript的函数可以存在数组中。

问题在于你写的遍历代码 ,取到的func是funcs的key

for(func in funcs) {
   // Uncaught TypeError: Property 'func' of object [object Object] is not a function
   func();
}

而不是value,所以会报错。


其实你在 for 循环里面把 func 打印出来就知道为啥了...

for (func in funcs) {
    console.log(func);
}
// 输出
// 0
// 1

可以保存在数组中

for(var i=0;i<funs.length;i++){
    var fun = funs[i];
    fun();
}
【热门文章】
【热门文章】