当我遇到一些奇怪的事情时,我正在使用 JavaScript 中的一些数组。这是我的代码:
var origArray = new Array("one","two","three","four","five","six","seven","eight");
var newArray = origArray.slice(1,3);
origArray[1] = "octopus";
console.log(newArray.join()); //prints two,three
var origArray = new Array(["one","two"],["three","four"],["five","six"],["seven","eight"]);
var newArray = origArray.slice(1,3);
origArray[1][0] = "octopus";
console.log(newArray.join()); //prints octopus,four,five,six
我不明白为什么
newArray
在第二种情况而不是第一种情况下会受到影响。这里发生了什么? 最佳答案
这是浅拷贝和深拷贝的区别。slice
结果是另一个对象而不是原始对象,但这并不意味着数组中的对象(一直向下)被复制。如果这些内部对象碰巧是数组,则它们在副本和原始对象之间共享。
关于javascript - 数组和切片的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14542278/