账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS对象(数组)的复制疑问
    19
    0

    题目描述

    《JavaScript权威指南》【3.7不可变的原始值和可变的对象引用】部分,提到

    对象的比较并非值的比较:即使两个对象包含同样的属性及相同的值,他们也是不相等的。

    这个我觉得理解没问题,因为不是在一个内存里面,都是互相独立的。给的示例:

    var o={x:1},p={x:1}; //具有相同属性的两个对象
    o===p //=>false:两个单独的对象永远不相等
    var a=[],b=[];  //两个单独的空数组
    a===b  //=>false; 两个单独的数组永不相等

    数组也是对象,而且都是单独声明的。
    但是到后面的一个函数我就困惑了:

    function equalArrays(a,b){
        if(a.length!=b.length)return false;  //两个长度不同的数组不相等
        for(var i=0;i<a.length;i++){         //循环遍历所有元素
            if(a[i]!==b[i]) return false;    //如果有任意元素不等,则数组不相等 
         return true;                         //否则他们相等
      }
    }

    对象相等应该是对象标识符的引用指向的是同一个内存地址吧?
    即使用“=”方式让两个对象相等。
    上面的例子只是判断了对象的“键值”对是一致的,不能证明a和b指向的是同一个内存地址啊?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • missyou 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部