Javascript的函数不能存在数组中吗?
巴扎黑
巴扎黑 2017-04-10 14:55:05
[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();
 }

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

巴扎黑
巴扎黑

全部回复(6)
黄舟
for(index in funcs) {
    funcs[index]();
}

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

怪我咯

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

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

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

可以保存在数组中

for(var i=0;i<funs.length;i++){
    var fun = funs[i];
    fun();
}
大家讲道理

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

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

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

而不是value,所以会报错。

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

chrome 測試通過。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号