参考自,我再整理一遍。

  1. 题目如下:
    1.  var a = {n:1};
      var b = a;
      a.x = a = {n:2};
      alert(a.x);
      alert(b.x);

      输出为  undefined, {n:2} .  

    2. 连等赋值时,对于 a.x = a = {n:2};

      1. 解析器先解析 a.x , 再解析a,得到他们的指针

        • 解析a.x的指针,因为此时a的指针指向的是 {n:1} , ‘x’属性并没有声明,先创建一个该属性,所以 {n:1}变为 {n:1, x:null}
      2. 再做赋值操作。
        1. 根据赋值的右结合性,上面的代码可以写为 a.x的引用 = (a的引用 = {n:2})
        2. 即先将值 {n:2} ,赋值给 a的引用 ,再赋值给 a.x的引用 ,但此时a已经指向 {n:2} , a.x 就是 ({n:2}).x ,但是 {n:2}并没有该属性
        3. 再将 {n:2} 赋值给 a.x的引用 ,即也是 b.x的引用 ,所以 {n:1, x:null}变为 {n:1, x: {n: 2}}

最新文章

  1. Lua的string和string库总结
  2. SQL Server 常用关键字
  3. 【WIN10】绑定x:Bind
  4. 为了方便可灌入自定义方法AppendLog 比如File
  5. webuploader 上传文件参数设置
  6. LINUX 虚拟机克隆与网络配置
  7. ASP.NET的Cookie和Session
  8. 【Win10】页面导航的实现
  9. ViewPager的使用
  10. rsync实现免密码操作的一种实现方式
  11. Invoke-Express 执行多个批处理命令的函数
  12. Specify a culture in string conversion explicitly
  13. NFinal ajax
  14. [python]pip总结
  15. eclipse的工程中如何查找字符串
  16. appium 后台运行shell脚本
  17. HI3516EV100 RTMP添加音频
  18. LINE@生活圈招募好友秘笈
  19. websocket使用
  20. [转帖] JVM虚拟机的历史

热门文章

  1. java类实现序列化的方法?collection框架中实现什么样的接口
  2. canvas toBlob ,ie兼容
  3. Java集合(容器)学习
  4. Test 7.12 T2
  5. SpringBoot之Web进阶
  6. ckeditor如何能实现直接粘贴把图片上传到服务器中?
  7. jquery ajax请求回调
  8. 2、投资之基金 - IT人思维之投资
  9. jsqlparser
  10. sqlserver备份和恢复-5