javascript运算符===和lodash方法_.eq()有什么区别?

3
在JavaScript中,===比较运算符和lodash中的_.eq()方法有区别吗? _.eq()链接
执行SameValueZero比较来确定两个值是否相等。 更新 不确定它是否像===操作符一样检查相同的类型。

7.2.10 SameValueZero (x, y)#

内部比较抽象操作SameValueZero(x,y),其中x和y是ECMAScript语言值,生成true或false。这样的比较如下进行:

如果Type(x)与Type(y)不同,则返回false。如果Type(x)是Number,则如果x为NaN且y为NaN,则返回true。如果x为+0且y为-0,则返回true。如果x为-0且y为+0,则返回true。如果x是与y相同的Number值,则返回true。返回false。返回SameValueNonNumber(x,y)。注意,SameValueZero与SameValue仅在其对+0和-0的处理方面不同。

7.2.11 SameValueNonNumber (x,y)#

内部比较抽象操作SameValueNonNumber(x,y),其中x和y均不是Number值,生成true或false。这样的比较如下进行:

断言:Type(x)不是Number。断言:Type(x)与Type(y)相同。如果Type(x)是Undefined,则返回true。如果Type(x)是Null,则返回true。如果Type(x)是String,则如果x和y是完全相同的代码单元序列(长度相同且相应索引处具有相同的代码单元),则返回true;否则,返回false。如果Type(x)是Boolean,则如果x和y都为true或都为false,则返回true;否则,返回false。如果Type(x)是Symbol,则如果x和y都是相同的Symbol值,则返回true;否则,返回false。如果x和y是相同的Object值,则返回true。否则,返回false。


也许 由SameValueZero链接提供的文档 会有所帮助。 - Jaromanda X
2
从那个链接中 - 如果x是NaN且y是NaN,则返回true - 所以,仅仅这一个语句就使它与===不同 - 因为NaN !== NaN - Jaromanda X
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接