1. 布尔值为false的值
在JavaScript中,布尔值为 false的值有如下几个:
undefinednullfalse0NaN""或''(空字符串)
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强制转化为布尔值。