为什么当我比较
时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
?
==
检查操作数参考。array1
和array2
具有不同的参考。但是array1[0]
和array2[0]
具有相同的参考(a
(,因此array1[0] == array2[0]
返回true
。
您正在比较两个相同但不同的对象。这将并且应该返回false。如果您希望它返回true,它应该看起来像:
var a = {id: 1, status: true};
var b = a;
console.log(a == b);
它们是否在数组中并不重要。阵列也是如此。如果比较两个数组,即使它们是相同的,除非变量指向同一数组。