上代码:
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();
}