var a = {"x": 1};
    var b = a;
    console.log(b.x);
    a.x = 2;
    console.log(b.x);
    a = {"x":3};
    console.log(b.x);
    a.x = 4;
    console.log(b.x);
为什么输出的是
1
2
2
2
                            
                                    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
对于js的object,b=a这样实际上是传了个引用
所以a.x变了之后,b.x被影响了。
再然后a = {"x": 3}使a变成了一个新的object
所以它的改变就和b无关了。
就像是这样:
如果你想要知道如何把a的值赋给b,然后让a的改变与b无关,代码还能够不猥琐(比如上面这种做法...)
可以参考这个->http://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object
对象的赋值属于引用类型,
除了基本类型, 其他对象都是引用方式赋值包括数组和函数