zoukankan      html  css  js  c++  java
  • 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强制转化为布尔值。

  • 相关阅读:
    Function to use in Queries, Filters
    Dynamics AX 2012
    Job to Import Vendor/Customer Postal Address in Dynamics Ax2012
    To Find or Update customer primary Address in Ax 2012
    Importing Customers, Vendors and Products in AX 2012
    CobaltStrike安装教程
    kali安装dnsdict6
    查看windows端口被占用
    使用reGeorg打穿HTTP隧道代理
    windows建立隐藏用户
  • 原文地址:https://www.cnblogs.com/gzhjj/p/11384249.html
Copyright © 2011-2022 走看看