为什么我比较
var a = {id: 1, status: true};
var b = {id: 1, status: true};
console.log(a == b);
返回false
当我比较时
var array1 = [{id: 1, status: true}, {id:1, status: true}];
var array2 = [{id: 1, status: true}, {id:1, status: true}];
console.log(array1[0] == array2[0]);
返回false
但是当我比较时
var a = {id: 1, status: true};
var b = {id: 1, status: true};
var array1 = [a, b];
var array2 = [a, b];
console.log(array1[0] == array2[0]);
它返回true
?
答案 0 :(得分:3)
==
检查操作数引用。 array1
和array2
有不同的引用。但array1[0]
和array2[0]
具有相同的引用(a
),因此array1[0] == array2[0]
会返回true
。
答案 1 :(得分:1)
您正在比较两个相同但不同的对象。哪个会,也应该返回false。如果您希望它返回true,它应该如下所示:
var a = {id: 1, status: true};
var b = a;
console.log(a == b);
它们是否在数组中并不重要。这同样适用于数组。如果你比较两个数组,即使它们是相同的,它也将返回false,除非变量指向同一个数组。