javascript赋值运算符等号=深入介绍

快乐打工仔 分类:实例代码

赋值运算符是最为常见也最为简单的运算符之一。

看如下代码实例:

var a = 3;

上面是一个最为简单的赋值语句。

下面再来看一段代码实例:

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

上面的代码输出结果是undefined,下面就进行一下详细分析。

建议事先参阅javascript引用类型和基本类型详解一章节。

先说明一点,那就是赋值运算是从右向左进行的。

(1).var a = { n: 1 },首先声明一个变量a,并为其赋值对象{ n: 1 }的地址。

(2).a.x = a = { n: 2 },这是代码的关键部分,由两个赋值运算符构成,赋值运算符的两侧是表达式,在赋值之前首先要执行这三个表达式,我们可以将代码修改成如下形式可能更加清晰一些:

(a.x) = (a) = ({ n: 2 });

先来看三个表达式的执行:

(a.x)为对象{n:1}添加一个x属性,但是并没有为属性赋值,得到如下对象:

{
  n: 1,
  x:undefined
}

(a)仅仅是返回对象。

({ n: 2 })同样仅仅返回对象。

下面进行赋值操作,从右到左进行:

a = { n: 2 },这个时候变量a存储的是对象{ n: 2 }的地址。

a.x = a,因为在进行赋值操作之前,表达式进行了运算,结果如下:

{
  n: 1,
  x:undefined
}

当进行了a = { n: 2 }赋值操作之后,上面计算所得的对象已经不再被变量a所引用,a.x = a如此赋值就是将变量a所引用的对象赋值给对象{n: 1,x:undefined}的x属性。

(3).console.log(a.x),那么这个输出值也就是undefined。

javascript赋值运算符等号=深入介绍,这样的场景在实际项目中还是用的比较多的,关于javascript赋值运算符等号=深入介绍就介绍到这了。

javascript赋值运算符等号=深入介绍属于前端实例代码,有关更多实例代码大家可以查看

回复

我来回复
  • 暂无回复内容