log()显示值实际更改之前变量的更改值

log()显示值实际更改之前变量的更改值

这段代码我理解。我们制作一份A的副本,并称之为C。当A被更改时,C保持不变。

var A = 1;var C = A;console.log(C); // 1A++;console.log(C); // 1

但是当A是数组时,我们就有了不同的判断。C不仅会改变,甚至在我们接触A之前就会发生变化

var A = [2, 1];var C = A;console.log(C); // [1, 2]A.sort();console.log(C); // [1, 2]

有人能解释一下在第二个例子中发生了什么吗?


慕容森
浏览 400回答 3
3回答

慕仙森

数组是对象..变量参考对物体。因此,第二种情况下的赋值复制了参照系(地址)从“A”到“C”的数组。之后,两个变量都引用同一个单个对象(数组)。像数字这样的原始值在像您这样的简单赋值中从一个变量完全复制到另一个变量。“A+;”语句为“A”赋值。换句话说:变量的值可能是任一一个本原值(一个数字,一个布尔值,null,或者是字符串),或者可能是参照系对一个物体。字符串原语的情况有点奇怪,因为它们更像对象而不是原始(标量)值,但它们是不可变的,所以可以假装它们就像数字一样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript