js中unshift()和push()的问题?

const names = ['abc','cba','nba']
names.forEach(function(item){
    this.unshift(item)
},names)

console.log(names)

输出:

 ['abc', 'abc', 'abc', 'abc', 'cba', 'nba']

为什么使用 unshift 会重复输出 abc,而使用 push 不会呢?

阅读 1.7k
2 个回答

因为第一次插入的时候,index=0,所以是 abc。第二次插入的时候,index=1,还是 abc(原始的 abc 后移了)。同理可证第三次。

它的源码类似这个,你捋一下

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