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 不会呢?
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 不会呢?
它的源码类似这个,你捋一下
Array.prototype._forEach = function(callback, context){
for(let i = 0, l = this.length; i < l; i++){
callback.call(context, this[i])
}
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
因为第一次插入的时候,
index=0
,所以是abc
。第二次插入的时候,index=1
,还是abc
(原始的abc
后移了)。同理可证第三次。