var foo;
console.log(typeof foo); //"undefined"
if(typeof foo === 'undefined')
console.log(1);
if(!foo)
console.log(2);
在我上面的示例中,控制台将同时记录“1”和“2”,因为undefined
评估为false
. null
, NaN
, ""
(空字符串) 等也会发生同样的事情。
typeof
使用运算符并比较字符串值而不是使用评估的布尔值是否更常见?除了可读性有什么不同吗?有什么优点和缺点吗?