欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js中连等的执行顺序:a.x = a = {n: 2}

程序员文章站 2024-03-17 21:26:04
...

新的一天从一道查漏补缺题开始:

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

解析:

  1. 多次赋值与顺序无关,是同时进行赋值的
  2. 每个节点的变量最终赋值的值取决去最后一个等号的右边值
  3. 如果赋值是引用类型,则最终指向的是同一个对象

js中连等的执行顺序:a.x = a = {n: 2}

a.x=引用的是堆内存里面的属性变量,在解析时会直接对这个地址的变量进行操作,而a=访问变量栈内存里面这个变量名,所以进行赋值操作并不会影响前者,因为解析这个语句时一次性全部读取再进行赋值,而不是进行分段读取赋值的。所以就解释了与顺序无关,所有的属性都将会被赋值到最右的值

参考:

是从这位作者这里看到的噢,只是做一个转存:JavaScript连续赋值的执行顺序问题