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引用同一个数组,因此它们相等
  • 相关阅读:
    C#遍历List并删除某个或者几个元素的方法
    7月清北学堂培训 Day 4
    7月清北学堂培训 Day 3
    7月清北学堂培训 Day 2
    7月清北学堂培训 Day 1
    P1383 高级打字机
    P2401 不等数列
    P1412 经营与开发
    P1314 聪明的质监员
    2019.7.9 校内测试 T3 15数码问题
  • 原文地址:https://www.cnblogs.com/ysx215/p/10774810.html
Copyright © 2011-2022 走看看