Javascript ECMA-262===算法说明
我试图理解JavaScript中===运算符的精确算法。它被定义为Javascript ECMA-262===算法说明,javascript,Javascript,我试图理解JavaScript中===运算符的精确算法。它被定义为 var t1 = undefined,t2 = 2; typeof(t1); //"undefined" typeof(t2); //"number" t1 === t2; //returns false ????? 比较x===y,其中x和y是值,生成true或false。这样的比较如下所示: 如果类型(x)与类型(y)不同,则返回false 如果类型(x)未定义,则返回true 如
var t1 = undefined,t2 = 2;
typeof(t1); //"undefined"
typeof(t2); //"number"
t1 === t2; //returns false ?????
比较x===y,其中x和y是值,生成true或false。这样的比较如下所示:
- 如果x为NaN,则返回false
- 如果y为NaN,则返回false
- 如果x与y的数值相同,则返回true
- 如果x为+0,y为−0,返回true
- 如果x是−0且y为+0,返回true
- 返回false
var t1 = undefined,t2 = 2;
typeof(t1); //"undefined"
typeof(t2); //"number"
t1 === t2; //returns false ?????
考虑第2点和第3点:它应该返回true。
我正在测试它在铬15.0.874.106米。有人能解释一下这种情况下到底发生了什么吗?考虑到
1:如果类型(x)与类型(y)不同,则返回false。
,t1==t2
确实应该返回false
t1
是未定义的
,而t2
是一个数字。您必须按顺序执行,如果类型(x)与类型(y)不同,则返回false。
。由于已经返回false,它永远不会到达第2点或第3点。这意味着未定义===
将产生true。第二步仅在两个值都未定义时执行。