使用评估的变量值而不是实际的类型

时间:2013-01-25 09:45:31

标签: javascript

var foo;

console.log(typeof foo); //"undefined"

if(typeof foo === 'undefined')
    console.log(1);

if(!foo)
    console.log(2);

在上面的示例中,控制台将记录“1”和“2”,因为undefined评估为falsenullNaN""(空字符串)等也会发生同样的事情。

更常见的是使用typeof运算符并比较字符串值,而不是使用评估的布尔值?除了可读性之外还有什么区别吗?有什么优点和缺点?

1 个答案:

答案 0 :(得分:4)

没有银弹,完全取决于你的目标。

如果你需要知道变量是“假的” - 你使用if (!var),如果你需要确切地知道它是null0,空字符串还是其他什么 - 你使用if (var === null)