console.log([]==[]);
控制臺結(jié)果為false
接下來看解析:
原始值的比較是值的比較:
它們的值相等時它們就相等(==)
它們的值和類型都相等時它們就恒等(===)阳堕。
對象和原始值不同,對象的比較并非值的比較,而是引用的比較:
即使兩個對象包含同樣的屬性及相同的值择克,它們也是不相等的
即使兩個數(shù)組各個索引元素完全相等恬总,它們也是不相等的
var a = {x:1}, b = {x:1}; // 具有相同屬性的兩個對象
a == b // => false: 兩個單獨的對象永不相等
var c = [], d = []; // 兩個單獨的空數(shù)組
c == d // => false: 兩個單獨的數(shù)組永不相等
我們通常將對象稱為引用類型(reference type),以此來和JavaScript的基本類型區(qū)分開來肚邢。對象值都是引用(reference)壹堰,對象的比較均是引用的比較:當且僅當它們引用同一個基對象時,它們才相等。
比如:
var a = []; // 定義一個引用空數(shù)組的變量a
var b = a; // 變量b引用同一個數(shù)組
b[0] = 1; // 通過變量b來修改引用的數(shù)組
a[0] // => 1: 變量a也會修改
a === b // => true:a和b引用同一個數(shù)組缀旁,因此它們相等