【发布时间】:2014-07-28 02:30:36
【问题描述】:
这是一个关于 javascript 对象本体和 === 运算符工作方式的一般问题。
从一个例子开始:
var z = [1];
z === [1] // returns false.
完全让我大吃一惊。为什么??
我猜=== 将数组作为对象进行比较(即通过其对象 id 或其他),而不是通过比较对象的内容——这将返回 true。
那么有什么比较好的方法来比较这样一个对象的内容呢?
您可以通过转换z.toString() 并比较结果来强制解决问题,但这似乎很粗糙。
【问题讨论】:
-
第一部分实际上是赋值(用'=',不是比较)。你能发布一个实际的工作代码sn-p吗?
-
@MikeCheel 示例有什么问题?他意味着要分配的第一部分,以表明在将
[1]分配给z之后,当他将其与[1]进行比较时,它返回false -
我只是指出来,因为 MarcB 提到 eh 认为它类似于 == 和 === 之间的区别
-
是的,我的意思是第一个 = 是一项任务,Tom 明白了。下面的答案一针见血,或者至少证实了我的猜测,尽管我仍然想知道 .toString() 是否是比较两个数组内容的最佳方法,而不是递归迭代并检查每个数组item 以确保它与另一个数组中的相应值相同(并在 item 是数组或对象而不是数组的情况下递归)。
标签: arrays object comparison-operators