声明定义
// 对象创建布尔类型var bool1 = new Boolean(true);var bool2 = new Boolean(false);console.log(bool1); // trueconsole.log(bool2); // false// 字面了创建布尔类型var bool3 = true;console.log(bool3); // true
隐式转换
| 数据类型 | true | false |
|---|---|---|
| Number | 非 0 数字 | 0、NaN |
| String | 非空字符串 | 空字符串 |
| Array | 非空数组、无比较运算的空数组 | 有比较运算的空数组 |
| Object | 所有对象 | / |
| undefined | / | undefined |
| null | / | null |
| NaN | / | NaN |
* Array 隐式转换为 Boolean
var list1 = [];var list2 = [1];console.log(!!list1); // 空数组,但无比较运算。trueconsole.log(!!list2); // 非空数组。trueconsole.log(list1 == true); // 空数组,存在比较运算。falseconsole.log(list1 == false); // 空数组,存在比较运算。trueconsole.log(list2 == true); // 非空数组,无论何时都为 true
显示转换
!!any
**params**{ any } any**return**_ { boolean }
Boolean(any)
**params**{ any } any_
**sreturn**{ boolean }
var num = 1;var str = "1";var list = [];var obj = {};var _undefined = undefined;var _null = nullvar _NaN = NaN;console.log(!!num); // trueconsole.log(!!str); // trueconsole.log(!!list); // trueconsole.log(!!obj); // trueconsole.log(Boolean(_undefined)); // falseconsole.log(Boolean(_null)); // falseconsole.log(Boolean(_NaN)); // false
