1. 布尔值为false的值
在JavaScript中,布尔值为 false
的值有如下几个:
undefined
null
false
0
NaN
""
或''
(空字符串)
2. !!的作用
将上述值与 false
作比较。
console.log(undefined==false); // false console.log(null==false); // false console.log(false==false); // true console.log(0==false); // true console.log(NaN==false); // false console.log(""==false); // true console.log(''==false); // true
发现 undefined==false
、null==false
和 NaN==false
的值均为 false
,如果加上 !!
,结果如下:
console.log(!!undefined==false); // true console.log(!!null==false); // true console.log(!!false==false); // true console.log(!!0==false); // true console.log(!!NaN==false); // true console.log(!!""==false); // true console.log(!!''==false); // true
事实上,!!
的作用是将值的类型强制转化为布尔类型。
3. 回顾条件判断语句
3.1 一个例子
var b = 0; if(b){ console.log('true'); } else { console.log('false'); // 执行这行代码 }
var b = 0; if(b&&true){ console.log('true'); } else { console.log('false'); // 执行这行代码 }
var b = 0; if(!!b&&true){ console.log('true'); } else { console.log('false'); // 执行这行代码 }
因此,if
语句的条件表达式会执行隐式类型转换。
3.2 另一个例子
function test(value){ return value && true; } console.log(test(0)); // 0
function test(value){ return !!value && true; } console.log(test(0)); // false
可以看到,!!
把 value
强制转化为布尔值。