下面小编就给大家带来一个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);
我们先来看普通的连续赋值,也就是变量赋值的类型是数据类型value。
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
上面的小case是用来吸玉的。现在我们来分析一下这个经典案例:
var a={ n:1 };//a第一次赋值,是引用类型值。请记住,当一个变量被赋值为引用类型值时,当对象被变量改变时,对象本身也会改变。
var b=a;//b赋给A,所以B是对象{n:1}
a . x=a={ n:2 };
//这个赋值不同于前面的简单情况。a.x指的是在js的操作中给a .添加一个X属性,“”和“=”运算符同时出现,而“.”将首先执行操作。
//因此,赋值顺序已经更改。先赋值a.x,再赋值A。
//先执行一下就好了:a.x={n:2}。注意这里a没有变。你把a的x性质赋给{n:2},a还是{n:1}
//回到我代码的第一句,这个赋值行为改变了对象{n:1},也就是给它增加了一个名为x的属性。
//重新执行a={n:2},这意味着变量A不再是对象{n:1},而是被重新赋值为一个新的对象{ n:2 };
console . log(a);//自然这时A就是对象{n:2}
console . log(b);//a的二次赋值并没有影响到B,B仍然是对象{n:1},但是由于A在重新赋值之前给对象{n:1}添加了一个X属性,此时B已经有了X属性。
console . log(a . x);//{n:2}对象没有x属性,所以结果未定义。
console . log(b . x);//综上,这个结果是{n:2}
以上js中的变量连续赋值(例题讲解)就是边肖分享的全部内容。希望给大家一个参考,多多支持我们。