Javascript - 如果声明 - 字符串&&条件中的布尔值

时间:2013-02-27 18:49:12

标签: javascript

如果我自己测试一个布尔值,我知道我不必把== true。

 if (bool) {
   foo();
 }

我有一个if条件来测试sting的值和布尔值的真实性,我可以替换:

 if ( string === "hello" && bool == true ) {
   foo();
 }

with:

 if ( string === "hello" && bool ) { 
 foo();
 }

此外,bool值是否会使用三等号?到目前为止,我在bool测试中看到的只是双等号。

感谢。

3 个答案:

答案 0 :(得分:3)

使用三等号it's preferred

if(bool == true)if(bool === true) and if(bool)都是不同的表达方式。第一个是说值bool必须是原始JavaScript类型true,或者是布尔值(即新的Boolean())对象的对象表示,其值为true。第二个是说值“bool”必须属于primitive type bool(新的Boolean()对象,即使值为true,也会失败)。如果bool是

,则第三个表达式仅为false
  • false
  • null
  • undefined
  • 空字符串''
  • 数字0
  • 数字NaN

意思是,例如,如果你传入一个空对象({}),第二个表达式将会变为true。

一些例子:

var bool = true;
var boolObj = new Boolean(true);
var boolEmptyObj = {};

if (bool === true) { alert("This will alert"); }
if (boolObj === true) { alert("Nope, this wont alert"); }
if (boolEmptyObj) { alert("This will alert"); }

答案 1 :(得分:1)

是。如果bool确实是一个布尔值,它将评估为true或false,就像任何表达式一样。您还可以使用以下命令确保bool是布尔值:

!!bool

答案 2 :(得分:0)

是的,但当您仅使用bool时,这些值的值为falsenullundefined0"" (empty string) 。你需要小心。