如果我自己测试一个布尔值,我知道我不必把== true。
if (bool) {
foo();
}
我有一个if条件来测试sting的值和布尔值的真实性,我可以替换:
if ( string === "hello" && bool == true ) {
foo();
}
with:
if ( string === "hello" && bool ) {
foo();
}
此外,bool值是否会使用三等号?到目前为止,我在bool测试中看到的只是双等号。
感谢。
答案 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是
意思是,例如,如果你传入一个空对象({}),第二个表达式将会变为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
时,这些值的值为false
:null
,undefined
,0
和"" (empty string)
。你需要小心。