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.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.3k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
5 回答3.8k 阅读
因为第一次插入的时候,
index=0
,所以是abc
。第二次插入的时候,index=1
,还是abc
(原始的abc
后移了)。同理可证第三次。