js中变量的连续赋值
今天遇到了一个连续赋值的经典案例,网友们给出的答案也是五花八门,看起来有些繁琐,我也来说说自己的看法。 下面就是这个经典案例: var a = {n: 1}; var b = a; a.x = a = {n: 2}; console.log(a);console.log(b); console.log(a.x); console.log(b.x); 我们先来看一下普通连续赋值,即:变量赋值的类型是数据类型值 var a=3; var b=a=5; console.log(a); console.log(b); 一般来说,等号赋值的方向是从右至左,那么上面的代码等同于下面这段代码,那么我们就用下面这段代码来解释上面的代码: var a=3; //全局变量a被赋值为3 var a=5; //此时a被重新赋值为5 var b=a; //将a的值赋给全局变量b console.log(a);//a最终的值就是第二次被赋的值:5 console.log(b);//按照代码执行顺序b的值也是:5 上面的小案例用来抛砖引玉,现在我们来分析这个经典案例: var a = {n: 1};//a第一次被赋值,是一个引用类型值,请记得变量赋值为引用类型值的时候,通过变量改变这个对象的时候,对象本身也发生了变化 var b = a;//b被赋值为a,因此b就是对象