美文网首页
面试题总结

面试题总结

作者: yokohu | 来源:发表于2018-07-12 10:32 被阅读0次

    1. js连等复制运算
    var a = {n: 1};
    var b = a;
    a.x = a = {n: 2};
    alert(a.x); // --> undefined
    alert(b.x); // --> {n: 2}


    解析:参考 https://segmentfault.com/a/1190000004224719#articleHeader0

    (1)理论
    JS引擎是怎样计算一般的赋值表达式 A = B的呢?简单地说,按如下步骤:

    1. 计算表达式A,得到一个引用refA;
    2. 计算表达式B,得到一个值valueB;
    3. 将valueB赋给refA指向的名称绑定;
    4. 返回valueB。

    (2)思路
    设:[X]表:X的内存应用
    [N1]=>[N:1]
    [N2]=>[N:2]

    a.x = a = {n: 2};
    这里会被翻译成
    [N1].x=(a=[N2]) (括号里面为右值运算 所以这里就是把a变量的内存地址改向[N2])
    =>
    [N1.]X=[N2]
    a=[N2]
    b=N1
    =>
    a=[N2]
    a.x=[N2].x(然而N2不存在X值 所以指向undefined)
    b.x=[N1].x=[N2]

    相关文章

      网友评论

          本文标题:面试题总结

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