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

  • 相关阅读:
    C#中的json操作
    Webdriver 怎么操作 scrollbar 下拉框
    jQuery 选择器
    BUYING FEED (第三届省赛)
    AMAZING AUCTION (第三届省赛)
    聪明的“KK” (第三届省赛)
    网络的可靠性 (第三届省赛)
    如何通俗理解——>集群、负载均衡、分布式
    常用的shell命令
    javascript实现原生ajax
  • 原文地址:https://www.cnblogs.com/gzhjj/p/11384249.html
Copyright © 2011-2022 走看看