码迷,mamicode.com
首页 > 编程语言 > 详细

两个空对象(空数组)为什么不相等

时间:2019-11-14 16:38:25      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:rip   一个   打印   相同   相等   也会   lse   答案   log   

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



两个空对象(空数组)为什么不相等

标签:rip   一个   打印   相同   相等   也会   lse   答案   log   

原文地址:https://www.cnblogs.com/veraNotes/p/11858243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!