Tru*_*yen 5 javascript arrays javascript-objects
据我了解,Javascript通过引用传递对象,数组也是一个对象,但是当我创建一个整数数组然后将它传递给一个函数时,如下代码:
function testFunc(outTestArray) {
var aiTemp = [1,2,3,4];
/*Using slice(0) to clone array */
outTestArray = aiTemp.slice(0);
}
var aiTest = Array.apply(null, Array(4)).map(Number.prototype.valueOf, 0);
testFunc(aiTest);
console.log(aiTest.toString()); // aiTest still [0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
我也知道 slice(0) 函数只返回数组的浅拷贝,但如果数组只是一个整数数组。所以我的问题是为什么aiTest的数据没有被修改?
您的错误是您的浅拷贝概念是错误的。
浅拷贝复制数组的内容,但不复制数组成员引用的内容。
如果您的数组是对象引用的数组,则浅拷贝将复制引用,因此您的新数组将指向相同的底层对象。
但这个数组是整数。整数本身被浅拷贝复制。
| 归档时间: |
|
| 查看次数: |
6901 次 |
| 最近记录: |