0

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

 if (bool) {
   foo();
 }

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

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

和:

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

?

另外,布尔值会使用三等号吗?到目前为止,我在布尔测试中看到的只是双等于。

谢谢。

4

3 回答 3

3

使用三等号,这是首选

if(bool == true),if(bool === true) and if(bool)都是不同的表达方式。第一个是说值 bool 必须是原始的 JavaScript 类型 true,或者是布尔值的对象表示(即 new Boolean()),值为 true。第二个是说值“bool”必须原始类型 bool(新的 Boolean() 对象,即使值为 true,也会失败)。仅当 bool 为时,第三个表达式才为假

  • 错误的
  • 无效的
  • 不明确的
  • 空字符串''
  • 数字 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"); }
于 2013-02-27T19:27:31.777 回答
1

是的。如果 bool 真的是一个布尔值,它将评估为真或假,就像任何表达式一样。您还可以使用以下方法确保 bool 是布尔值:

!!bool
于 2013-02-27T18:51:51.640 回答
0

是的,但是当您只使用这些bool值时falsenullundefined和。你需要小心。0"" (empty string)

于 2013-02-27T18:51:52.387 回答