请教下js数组forEach的一个疑惑?

请教下,在看一个示例的时候,突然对下面代码中的forEach用法很疑惑。
funcs是数组,func指代当前数组项的值,这个func()是啥意思啊?
基础较差,查了好久都没搞明白,求解,感谢~

    var funcs = []
    for (var i = 0; i < 10; i++) {
        funcs.push(function() { console.log(i) })
    }
    funcs.forEach(function(func) {
        func()
    })
阅读 3.1k
4 个回答

一步一步分解,其实木有你想象的那么麻烦
你说自己基础差,只是自己给自己设置了一个门槛而已
这些基础,几个月就可以补起来,前提是你要系统的去学习

var funcs = [] 
// => funcs现在是个空数组 []

for (var i = 0; i < 10; i++) {
  funcs.push(function() { console.log(i) })
}  
// => funcs现在是包含10个函数的数组  [function() { console.log(i) }, function() { console.log(i) }, ...]
    
funcs.forEach(function(func) {
  // 遍历数组,取出每一个函数,即function() { console.log(i) }
  // 执行这个函数
  func();
})

建议

  • 像你现在这样的情况
  • 可以从基础入手,把犀牛书,蝴蝶书以及红宝书从头看到尾
  • 坚持半年,你就会发现有很大的变化

func() 是函数调用啊。

你数组里放的不都是函数。

你这基础何止是差,是没有基础好吧
自己数组里放了啥都不知道

funcs.forEach(function(func) {
        func()
    })

func() 是调用函数,函数哪里来的。func 是传入的参数。

func 是什么参数呢?funcs.forEach 遍历得来的,(item, idx, this) 这是传入的三个参数。

funcs 里面的东西哪里来的?push进去的,然后因为是 var 所以输出全是 10

    var funcs = []
    for (var i = 0; i < 10; i++) {
        funcs.push(function() { console.log(i) })
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题