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])
}
}
13 回答12.9k 阅读
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答2.1k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答1k 阅读
3 回答1.3k 阅读✓ 已解决
因为第一次插入的时候,
index=0
,所以是abc
。第二次插入的时候,index=1
,还是abc
(原始的abc
后移了)。同理可证第三次。