我试图理解===运算符在JavaScript中的精确算法。它被定义为类似于
比较x === y,其中x和y是值,产生真或假。这样的比较如下:
如果(X)类型(X)与类型( y )不同,则返回false。如果类型(X)未定义,则返回true。如果类型(X)为空,则返回真。如果类型(X)为数字,则返回真。如果类型(X)为数字,则返回假。<>H 212<代码>H 113如果y为NaN,则返回false。<代码>H 214<代码>H 115如果x与y相同,则返回真。H 216H 117如果x为+0且y为−0,则返回true,返回真。
如果x为−0,y为+0,则返回true。返回如果类型(X)是字符串,则如果x和y是完全相同的字符序列(相同长度和对应位置的相同字符),则返回
;否则,返回false。如果类型(X)是布尔型,则返回真,如果x和y都为true,则返回true;否则,如果x和y引用同一个对象,则返回 true。否则,返回false.如果我写这样的东西
var t1 = undefined,t2 = 2;
typeof(t1); //"undefined"
typeof(t2); //"number"
t1 === t2; //returns false ?????考虑第2点和第3点:它应该返回true。我正在用Chrome 15.0.874.106米进行测试,有人能解释一下这种情况到底是怎么回事吗?
发布于 2011-11-04 16:52:21
你得井然有序,If Type(x) is different from Type(y), return false.。因为false已经返回,所以它永远不会到达第2点或第3点。
发布于 2011-11-04 16:52:02
考虑到1: If Type(x) is different from Type(y), return false.,
t1 === t2确实应该返回false。
t1是undefined,t2是数字。
https://stackoverflow.com/questions/8012903
复制相似问题