• JavaScript中为什么需要!!?


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

  • 相关阅读:
    操作系统复习
    Google hack语法
    c++的set重载运算符
    华为笔试题
    Flume+Kafka整合
    kafka相关知识点总结
    kafka中生产者和消费者API
    Kafka集群环境搭建
    Storm消息容错机制(ack-fail机制)
    Storm通信机制(了解)
  • 原文地址:https://www.cnblogs.com/gzhjj/p/11384249.html
Copyright © 2020-2023  润新知