我应该使用!==或==!检查时不相等?

时间:2014-03-07 09:47:14

标签: javascript

我应该使用!==还是==!?两者都有效,但标准是什么?

我为两种情况输入“else”:

var x;
if (x !== undefined)
{
    alert("if..");
}
else
{
    alert('else..') // <--- here
}


var y;
if (y ==! undefined)
{
    alert("if..");
}
else
{
    alert('else..') // <--- here
}

2 个答案:

答案 0 :(得分:4)

==!不是Javascript中的比较运算符。当您编写foo ==! bar时,您实际上正在编写foo == !bar,使用一元!否定运算符和二进制==比较运算符。这可能不符合您的要求:

> 'b' ==! 'a'
false
> 'b' !== 'a'
true

这种情况恰好在您描述的特定情况下“有效”,因为!undefined评估为truey == true未定义yfalse,因此把你带到else分支。

答案 1 :(得分:1)

if (x !== undefined)

检查x是否未定义,而

if (y ==! undefined)

否定undefiend(返回!undefined == true)然后检查它是否与y

相等