JS-两个空数组为什么不相等?

mac2022-06-30  73

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引用同一个数组,因此它们相等

转载于:https://www.cnblogs.com/ysx215/p/11325280.html

相关资源:JavaScript比较两个数组的内容是否相同(推荐)
最新回复(0)