这是关于javascript对象本体的一般问题以及===
运算符的工作方式。
从一个例子开始:
var z = [1];
z === [1] // returns false.
完全引起了我的注意。为什么?
我想它必须是===
将数组作为对象(即通过其对象id或其他)进行比较,而不是通过比较对象的内容 - 这将返回true。
那么比较像这样的对象内容的好方法是什么?
您可以通过转换z.toString()
并比较结果来强制解决问题,但这似乎很粗糙。
答案 0 :(得分:0)
您无法将javascript中的两个非基元值与==或===进行比较。结果是错误的,即使它们的结构和值是等于的,因为比较不是在值上而是在对象的地址上。
Example
z = [5];
a = z;
b = z;
a === b; // true, because a and b linked to z.
要回答"如何比较"的问题,你可以有效地串联,或在两个数组上循环......