concat方法拷貝原數(shù)組
對象引用(非對象直接量):concat方法會(huì)復(fù)制對象引用放到組合的新數(shù)組里,原數(shù)組和新數(shù)組中的對象引用都指向同一個(gè)實(shí)際的對象,所以跷敬,當(dāng)實(shí)際的對象被修改時(shí),兩個(gè)數(shù)組也同時(shí)被修改.
第一個(gè)栗子
var arr1 = [1, 2, {a: 'test'}]
var arr2 = ['a', 'b', 'c']
var output = arr1.concat(arr2)
console.log(output) // output[2].a == 'test'
setTimeout(function(){
arr1[2].a = 'has changed'
console.warn(output) //output[2].a == 'has changed'
}, 5000)
第二個(gè)栗子
var arr1 = [1, 2, 3]
var arr2 = ['a', 'b', 'c']
var output = arr1.concat(arr2)
console.log(output)
setTimeout(function(){
arr1[2] = 99
console.warn(output) //output值并不會(huì)改變
}, 5000)
面試時(shí)被問到過的一道題缀皱,記憶猶新啊(為什么我沒早看到這篇文章)动猬。變量啤斗、對象傻傻搞不清楚。