JavaScript中为什么需要!!?

梦想的初衷 提交于 2019-11-28 00:56:07

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==falsenull==falseNaN==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强制转化为布尔值。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!