!!(2个叹号)在js代码中出现怎么理解

来源:互联网 发布:2014网络词语大全 编辑:程序博客网 时间:2024/05/03 03:14

首先看代码,如下:-------------------A-----------------

    function xxx() {        var result;        if ($("#xx").val() != "" || $("#xxx").val() != "") {            result = true;        } else {            result = false;        }        return result;    }

首先,此段代码乍一看,可以这么优化,就是直接return,如下:---------------------B------------------

    function xxx() {        var result;        result = ($("#xx").val() != "" || $("#xxx").val() != "");        return result;    }
或者这样:----------------------C---------------------

    function xxx() {        return ($("#xx").val() != "" || $("#xxx").val() != "");    }

但是这还不是编辑器提示的结果,编辑器提示这么改:-----------------------D-----------------


    function xxx() {        return !!($("#xx").val() != "" || $("#xxx").val() != "");    }

前面有2个叹号,怎么理解。

!!一般用来将后面的表达式转换为布尔型的数据(boolean) 
下面解释,为什么ide编辑器会建议你这么改写代码:

因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,
类似的如: 
a=parseInt("1234") 
a="1234"+0 //转换为数字 
b=1234+"" //转换为字符串 
c=someObject.toString() //将对象转换为字符串 
其中第1种、第4种为显式转换,2、3为隐式转换 
布尔型的转换,javascript约定和c类似,
规则为 
·false、undefinded、null、0、"" 为 false
·true、1、"somestring"、[Object] 为 true


经这么一解释,是不是就是说,酱紫就可以保证后面的肯定是boolean型啦

一般能都能到c的程度就可以啦。


下面是我自己遇到这个问题之后,亲自调试一番的截图。也就是在js里面的三目运算符怎么简单写,怎么来。



     注释:一个多选select的值是一个数组,首先他的值不是“”或者null然后才能保证数组的.length不会报错,然后数组[0]也不会报错。一环扣一环。如代买显示,当select未选择时,在后面的三个&&条件中,第一个就失败,后面的就不执行啦。然后这个isAllTopoIds变量的值就变成null。但是我们想要的是true或者false。



      注释:这个就是select选择值的时候,这个时候返回的就是true。


然后再看使用2个叹号的情况。



       注释:null取反true再取反就是false,就是boolean类型啦。这是FALSE的情况。



       注释:这就是TRUE的情况。


这就不用使得代码啰嗦,不用三木运算符后面,再跟上? 和: 啦。

书写简单。

然后,一般这么写,都是要把刚刚那个表达式当作一个条件判断来用,既然是条件判断的话,那么一般就是只有TRUE 或者FALSE。然后这个2个叹号的写法,就可以保证返回的结果是boolean类型。

他就这么个作用。




0 0
原创粉丝点击