zoukankan      html  css  js  c++  java
  • JS-两个空数组为什么不相等?

    var a = [], b = [];
    console.log(a==b);

      控制台的打印结果是什么?答案是:false。

      接下来看解析:

      原始值的比较是值的比较:

        它们的值相等时它们就相等(==)

        它们的值和类型都相等时它们就恒等(===)。

      对象和原始值不同,对象的比较并非值的比较,而是引用的比较:

        即使两个对象包含同样的属性及相同的值,它们也是不相等的

        即使两个数组各个索引元素完全相等,它们也是不相等的

      举个栗子:

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

      我们通常将对象称为引用类型(reference type),以此来和JavaScript的基本类型区分开来。对象值都是引用(reference),对象的比较均是引用的比较:当且仅当它们引用同一个基对象时,它们才相等。

      举个栗子:

    var a = [];  // 定义一个引用空数组的变量a
    var b = a;   // 变量b引用同一个数组
    b[0] = 1;    // 通过变量b来修改引用的数组
    a[0]         // => 1: 变量a也会修改
    a === b      // => true:a和b引用同一个数组,因此它们相等
  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/ysx215/p/10774810.html
Copyright © 2011-2022 走看看