转换为布尔值

Boolean(...) 会将任何数据类型转换为 truefalse

Boolean("true") === true
Boolean("false") === true
Boolean(-1) === true
Boolean(1) === true
Boolean(0) === false
Boolean("") === false
Boolean("1") === true
Boolean("0") === true
Boolean({}) === true
Boolean([]) === true

空字符串和数字 0 将转换为 false,其他所有字符串将转换为 true。

一种较短但不太清晰的形式:

!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true

这种较短的形式利用逻辑 NOT 运算符两次隐式类型转换,如 http://stackoverflow.com/documentation/javascript/208/boolean-logic/3047/double-negation-x 中所述

以下是 ECMAScript 规范中的布尔转换的完整列表

  • 如果 undefined 类型 undefinednull 然后 Boolean(myArg) === false
  • 如果 myArg 类型 boolean 然后 Boolean(myArg) === myArg
  • 如果 numbermyArg 那么 Boolean(myArg) === false 如果 myArg+0‑0,或 NaN; 否则 true
  • 如果 myArg 属于 string 那么 Boolean(myArg) === false 如果 myArg 是空字符串(它的长度为零); 否则 true
  • 如果 symbolobject myArg 那么 Boolean(myArg) === true

转换为 false 为 booleans 的值称为 falsy (所有其他称为 truthy )。请参阅比较操作