JavaScript中的连续赋值

来源:互联网 发布:淘宝运营课程表及费用 编辑:程序博客网 时间:2024/05/17 09:19

JavaScript中的连续赋值:

var a = {n: 1}var b = a;a.x = a = {n: 2}console.log(a.x);//undefined console.log(b.x)//Object {n: 2} 
Javascript中赋值运算符“=”的优先级是除了“,”以外最低的,并且是从右向左结合的。
Javascript中运算的顺序是从左向右的。

a.x = a = {n: 2}可以看做a.x =(a = {n: 2}) ,先运算a.x,在a中添加x属性,结果为null,在计算表达式(a = {n: 2}),最后进行赋值运算。

修改程序:

var a = {n: 1}var b = a;a = a.x = {n: 2}console.log(a.x);//undefined console.log(b.x)//Object {n: 2}

var a = {x:{xx:1},y:2,z:3};var b = a.x;  //{xx:1}var c = a;a.w = a.x.xx = a.y = a = {x:10,y:20};console.log(a);console.log(b);console.log(c);
a : {x: 10, y: 20}

b : {xx : {x: 10, y: 20}}
c : {x:{xx:{x:10,y:20}},y:{x:10,y:20},z:3,w:{x:10,y:20}}

console.log(c.x.xx.x);//10console.log(c.y.x);//10console.log(c.w.x);//10


原创粉丝点击