每天一道JS笔试题(1)

256 阅读1分钟
原文链接: mp.weixin.qq.com

题目

var a = [], b = [];

console.log(a==b);

控制台的打印结果是什么?

答案是:false,接下来看解析。

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

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

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

对象的比较是引用的比较:

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

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

举个栗子:

var o = {x:1}, p = {x:1};o == p                               // => false: 两个单独的对象永不相等var a = [], b = [];          a == b                               // => false: 两个单独的数组永不相等var c=0,d=0; c==d                                 // => true

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

举个栗子:

var a = []; // 定义一个引用空数组的变量avar b = a;   // 变量b引用同一个数组a === b       // => true:a和b引用同一个数组,因此它们相等