为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2019-07-05 15:37:14
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]有人能解释一下在第二个例子中发生了什么吗?
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

数组是对象..变量参考对物体。因此,第二种情况下的赋值复制了参照系(地址)从“A”到“C”的数组。之后,两个变量都引用同一个单个对象(数组)。

像数字这样的原始值在像您这样的简单赋值中从一个变量完全复制到另一个变量。“A+;”语句为“A”赋值。

换句话说:变量的值可能是任一一个本原值(一个数字,一个布尔值,null,或者是字符串),或者可能是参照系对一个物体。字符串原语的情况有点奇怪,因为它们更像对象而不是原始(标量)值,但它们是不可变的,所以可以假装它们就像数字一样。


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 399 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信