• js 中的 !!


    基本类型的布尔值 true、false 和 值为 true、 false 的 Boolean 对象是不同的

     1 var b = undefined
     2 
     3 var base_b = Boolean(b);
     4 console.log(base_b);
     5 // false
     6 console.log(typeof base_b);
     7 // boolean
     8 
     9 var obj_b = new Boolean(b);
    10 console.log(obj_b);
    11 // Boolean {false}
    12 console.log(typeof obj_b);
    13 // object
    14 
    15 if(base_b){
    16   // 这里的代码 不 会执行  
    17 }
    18 
    19 if(obj_b){
    20   // 这里的代码 会 执行, obj_b 是个非 null 的对象  
    21 }

    基本类型

    0 -0 NaN false null ''(空字符串) undefined 被转化为布尔值时,皆为 false 

    [] {} 空数组,空对象 都是 true, 除去上行 false 的情况,皆 true 

    Boolean 对象

    var b = new Boolean()

    不传值,或者 0 -0 NaN false null '' undefined 会得到 Boolean{ false }, 即值为 false 的Boolean对象

    任何不是 null 和 undefined 的对象都会被当做 true 来处理, 即使是 值为 false 的 Boolean 对象

    !

    var b = 'hello world';

    console.log( !b )  // false

    ! 的作用是,将 b 转为布尔值,并取反

    结合上文,当 b  0 -0 NaN false null ''(空字符串) undefined 时,!b 是 true

    !!

    var b = 'hello world'

    console.log( !!b )  // true

    在 ! 的基础上再次取反(!),其实相当于只是强转为 布尔值.. 等价于 Boolean(b),写法上更简洁

    结合上文,当 b 不是 0 -0 NaN false null ''(空字符串) undefined 时,!!b 是 true

    我自己的感觉,!! 是道保险,保证这个值是布尔值。其实如果是写在条件语句中的话,会默认进行隐式类型转换,与不加 !! 效果应该是一样的

    如有错误,望指正

  • 相关阅读:
    ZROI2018提高day5t1
    noi.ac day1t1 candy
    ARC102E Stop. Otherwise...
    TOP命令详解(负载情况)
    mysql 时间函数 时间转换函数
    maven编译时错误:无效的目标发行版
    jsp base路径
    mybatis typehandler
    终极解决方案 at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针
    【转】 IntelliJ IDEA像Eclipse一样打开多个项目
  • 原文地址:https://www.cnblogs.com/yier0705/p/10147248.html
Copyright © 2020-2023  润新知