''在Javascript中等于false?区分''和布尔假的最安全的方法是什么?

时间:2009-09-23 13:48:18

标签: javascript

我们使用外部API whcih返回''或布尔值false,而Javascript似乎找到两者相等。 例如:

var x = '';
if (!x) {
  alert(x); // the alert box is shown - empty

}
if (x=='') {
  alert(x); // the alert box is shown here too  - empty

}
var z = false;
if (!z) {
  alert(z); // the alert box is shown - displays 'false'

}
if (z=='') {
  alert(z); // the alert box is shown here too - displays 'false'

}

我们如何区分这两者?

4 个答案:

答案 0 :(得分:27)

使用三等号

if (x===false) //false as expected
if (z==='') //false as expected

双等于将进行类型转换,而三等于不会。所以:

0 == "0" //true
0 === "0" //false, since the first is an int, and the second is a string

答案 1 :(得分:2)

var typeX = typeof(x);
var typeZ = typeof(z);

if (typeX == 'string' && x == '')
else if (typeX == 'boolean' && !typeX)

我也喜欢Peirix的答案,但这里有另一种选择。

答案 2 :(得分:0)

如peiris所述:三重等号检查值和类型

1 == '1' // true
1 === '1' // false

答案 3 :(得分:0)

为了避免这个问题,请使用jslint验证器。它有助于找到不安全的操作。