我知道数组是 javascript 中的一个对象,使其成为非原始数据类型,默认情况下使其成为通过引用传递。现在这在我遇到的大多数用例中都是正确的,但是我共享的代码显示了一种我不理解的奇怪行为,它似乎更像是“传递值类型”。
var arr = ['a','b','c']
/*
function addArr(ar){
ar.push('d')
return ar
}
console.log(addArr(arr)) // ['a', 'b', 'c', 'd']
console.log(arr) // ['a', 'b', 'c', 'd']
*/
//the above output is expected behavior for an Array object
function changeArr(ar){
console.log(ar) //1-// ['a', 'b', 'c']
ar = ['12','11']
console.log(ar) //2-// ['12', '11']
return ar
}
console.log(changeArr(arr)) //3-// ['12', '11']
console.log(arr) //4-// ['a', 'b', 'c']
//now I expect the forth console output to be ['12','11'] here because it is an object
绝地无双
呼唤远方
12345678_0001
相关分类