js对象等号赋值的bug

Posted chenyi4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js对象等号赋值的bug相关的知识,希望对你有一定的参考价值。

var a = n: 1;
var b = a;
a.x = a = n: 2;

console.log(a.x);
console.log(b.x);
有道题是这样的,觉得很奇葩,分析一下

 

 

1.对象 引用类型

对象属于引用类型,c,java,js里面都是的,对象就是引用类型,包括数组。

上面的a是引用类型,a保存的是对象 n: 1的地址,对这个对象的引用。b = a 。把a里面的地址赋值给了b,b也指向n: 1这个对象的物理地址。所以,a 一旦做赋值更改,修改的是a对引用的修改。b也同时修改,b修改的时候,a也会被修改。这就是引用类型

 

2.

var a = n:1;
var b = a;
a.x = a = n:2;
console.log(a===b.x); //true

  第二个奇葩结果

以上是关于js对象等号赋值的bug的主要内容,如果未能解决你的问题,请参考以下文章

vue.js 结构赋值--数组

C语言中的一个等号和两个等号有啥区别

关于JS的知识,Math(数学对象)

js—双等号引起的类型转换过程

面向对象-赋值运算

3. 变量的解构赋值