声明定义
// 对象创建布尔类型
var bool1 = new Boolean(true);
var bool2 = new Boolean(false);
console.log(bool1); // true
console.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); // 空数组,但无比较运算。true
console.log(!!list2); // 非空数组。true
console.log(list1 == true); // 空数组,存在比较运算。false
console.log(list1 == false); // 空数组,存在比较运算。true
console.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 = null
var _NaN = NaN;
console.log(!!num); // true
console.log(!!str); // true
console.log(!!list); // true
console.log(!!obj); // true
console.log(Boolean(_undefined)); // false
console.log(Boolean(_null)); // false
console.log(Boolean(_NaN)); // false