声明定义

  1. // 对象创建布尔类型
  2. var bool1 = new Boolean(true);
  3. var bool2 = new Boolean(false);
  4. console.log(bool1); // true
  5. console.log(bool2); // false
  6. // 字面了创建布尔类型
  7. var bool3 = true;
  8. console.log(bool3); // true

隐式转换

数据类型 true false
Number 非 0 数字 0、NaN
String 非空字符串 空字符串
Array 非空数组、无比较运算的空数组 有比较运算的空数组
Object 所有对象 /
undefined / undefined
null / null
NaN / NaN

* Array 隐式转换为 Boolean

  1. var list1 = [];
  2. var list2 = [1];
  3. console.log(!!list1); // 空数组,但无比较运算。true
  4. console.log(!!list2); // 非空数组。true
  5. console.log(list1 == true); // 空数组,存在比较运算。false
  6. console.log(list1 == false); // 空数组,存在比较运算。true
  7. console.log(list2 == true); // 非空数组,无论何时都为 true

显示转换

!!any

**params** { any } any **return**_ { boolean }

Boolean(any)

**params** { any } any_

**sreturn** { boolean }

  1. var num = 1;
  2. var str = "1";
  3. var list = [];
  4. var obj = {};
  5. var _undefined = undefined;
  6. var _null = null
  7. var _NaN = NaN;
  8. console.log(!!num); // true
  9. console.log(!!str); // true
  10. console.log(!!list); // true
  11. console.log(!!obj); // true
  12. console.log(Boolean(_undefined)); // false
  13. console.log(Boolean(_null)); // false
  14. console.log(Boolean(_NaN)); // false