美文网首页
js赋值顺序

js赋值顺序

作者: Asuler | 来源:发表于2022-02-17 17:19 被阅读0次
var a = {n: 1}  
var b = a;  
a.x = a = {n: 2}  
console.log(a.x);   // undefined
console.log(b.x)   // {n: 2}

解析:
最主要的是 a.x = a = {n: 2} 这句话

. 运算符的优先级高于 =

所以顺序是
第一步,a.x = (????),此时因为还没有生成{n: 2},所以这个a.x,是在老地址里面声明的x变量,
第二步,执行 (????)里面的内容,也就是 a = {n: 2},在这里a指向了新地址{n: 2}
第三步,也就是执行从左到右数的第一个=,那么就是(老地址.x) = a的新地址
老地址因为被b引用,无法被销毁,所以b.x 就是a的新地址,
所以 b.x 就是{n : 2},那么a.x此时因为a指向了新地址,新地址里面没有声明变量x,所以a.x 是undefined

相关文章

  • js赋值顺序

    解析:最主要的是 a.x = a = {n: 2} 这句话 . 运算符的优先级高于 = 所以顺序是第一步,a....

  • JS连续赋值与求值顺序

    原文来自:https://www.cnblogs.com/morongwendao/p/6473095.html

  • KVC的查找顺序

    赋值顺序 取值顺序

  • js基础知识面试题(一)

    《js变量的语法扩展》 《变量进行交换》 总结:赋值要记牢,右边给左边,顺序是颠倒 《普通数据类型》: 《简单数据...

  • FPGA基础(1)verilog语法

    1、begin end 顺序语句块,fork join 并行语句块。 2、=是阻塞赋值,顺序执行,<=是非阻塞赋值...

  • operator =

    1. 赋值操作的结合顺序 赋值操作的结合顺序是从右到左,即 2. 输入参数一般为 const classname ...

  • KVC 的取值赋值

    赋值 KVC 会按照一定顺序进行赋值: setKey:, _setKey: , _key, _isKey, key...

  • JAVA与JS基础知识比对(一)

    js 变量 声明: var 变量名 赋值: 先声明,在赋值 声明之后直接赋值 以逗号隔开,给多个变量赋值 只声明,...

  • java 静态 new 对象

    一般情况下: Java中赋值顺序:父类的静态变量赋值自身的静态变量赋值父类成员变量赋值和父类块赋值父类构造函数赋值...

  • JS - 做个小实验,看看『解构赋值』的求值顺序

    上面这条语句的运行结果和我想象的不太一样,我以为的顺序是: 那这个表达式的计算顺序究竟是怎样的呢?看下面: 打印顺...

网友评论

      本文标题:js赋值顺序

      本文链接:https://www.haomeiwen.com/subject/beeslrtx.html