美文网首页
js赋值顺序

js赋值顺序

作者: 王善良_ | 来源:发表于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赋值顺序

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