给定以下数组:constx=[2,14,54,109,129,136,165,312,320,330,335,348,399,440,450,461,482,501,546,547,549,559,582,584,615,620,647,682];consty=[539,681,682,683];使用nodev7.3.0我观察到以下意外行为:[>x.find(y.includes,y);undefined[>y.find(x.includes,x);682示例片段:constx=[2,14,54,109,129,136,165,312,320,330,335,348,399,440,4
为什么以下行在Javascript中返回false:[[1,2,3],[1,2,4]].includes([1,2,3]);这背后的底层逻辑是什么? 最佳答案 includes使用SameValueZero进行比较平等算法。(如developer.mozilla.org中所述)。在搜索对象时(数组也是对象),它只会匹配对同一对象的引用。此外,Javascript数组是对象,您不能简单地使用相等运算符==来了解这些对象的内容是否相同。相等运算符只会测试两个对象是否实际上是完全相同的实例(例如myObjVariable==myObjVa