小编Muh*_*aib的帖子

ECMA-262 ===算法解释

我试图在JavaScript中理解===运算符的确切算法.它被定义为类似的东西

比较x === y,其中x和y是值,产生真或假.这样的比较如下进行:

  1. 如果Type(x)与Type(y)不同,则返回false.
  2. 如果Type(x)是Undefined,则返回true.
  3. 如果Type(x)为Null,则返回true.
  4. 如果Type(x)是Number,那么
    • 如果x是NaN,则返回false.
    • 如果y是NaN,则返回false.
    • 如果x与y的Number值相同,则返回true.
    • 如果x是+0且y是-0,则返回true.
    • 如果x是-0且y是+0,则返回true.
    • 返回false.
  5. 如果Type(x)是String,则如果x和y完全相同的字符序列(相应位置的长度和字符相同),则返回true; 否则,返回false.
  6. 如果Type(x)是布尔值,如果x和y都为true或两者都为false,则返回true; 否则,返回false.
  7. 如果x和y引用同一个对象,则返回true.否则,返回false.

现在,如果我写了类似的东西

var t1 = undefined,t2 = 2;
typeof(t1); //"undefined"
typeof(t2); //"number"

t1 === t2; //returns false ?????
Run Code Online (Sandbox Code Playgroud)

考虑第2点和第3点:它应该返回true.我在Chrome 15.0.874.106米测试它.有人可以解释一下这种情况到底发生了什么吗?

javascript

0
推荐指数
1
解决办法
60
查看次数

标签 统计

javascript ×1