javascript中!!运算符

在查看一些插件源码时,在做数据校验时,经常用到!!运算符,如:

乍看有点懵,其实按照js内置 "!" 运算符从右到左按次序剖析,也就理解了。

先看内层运算: !obj ,这是一个非运算:

当obj为假(null/undefined/false/NaN/""等),非运算后的结果未false;

当obj为真(非null/undefined/false/NaN/""等),非运算后的结果未true;

即:

!obj ===false ( obj为真时  )

!obj ===true ( obj为假时  )

再进行一次取非操作,结果就很明显了:

!!obj === true ( obj为真时 )

!!obj ===false ( obj为假时  )

所以,"!!"操作符是判断变量是否真正为真(非null/undefined/false/NaN/""等)的很简明的实现方式,省去了大量的&&运算,如果用&&来实现上述求真逻辑,代码表现如下:

        if( obj!==null &&obj!==undefined && obj!==NaN && obj!=="" && obj!==false){
            //statements
        }

表现非常的臃肿。

综上“!!”运算符在js中是求真的一个非常优秀的方法,在日常的代码编写中要用进去了~^_^

 

posted @ 2018-09-13 10:29  sophel  阅读(1543)  评论(0编辑  收藏  举报