!!(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类型。
他就这么个作用。
- !!(2个叹号)在js代码中出现怎么理解
- 怎么在chrome的地址栏中运行js代码
- eclipse加载工程中出现红叹号
- 转贴:光驱在设备管理器中出现黄叹号,而丢失盘符
- 光驱在设备管理器中出现黄叹号,而丢失盘符
- win7出现黄色小叹号怎么拍错思路
- js中变量前两个叹号(!!)作用
- js中变量前两个叹号(!!)作用
- js 中双叹号(!!)的作用
- eclipse中androd工程名出现红色叹号
- Eclipse中导入Maven项目时出现红叹号
- myeclipse中web项目出现红色叹号解决方案
- eclipse 出现红色叹号
- SVN出现红色叹号(!)
- 怎么在博客中加入统计代码?
- imageview怎么在代码中设置src
- textview怎么在代码中设置图片
- js 两个叹号!!
- 【Zookeeper】Leader选举机制示例
- 怎样把LoRa终端功耗降到极致
- 数字化运营使能系统的架构和应用部署
- 关于java Timestamp
- Android之SVN异常
- !!(2个叹号)在js代码中出现怎么理解
- 每天学习十分钟22之JavaScript
- LeetCode #122. Best Time to Buy and Sell Stock II
- 19.IDA-栈指针调节、设置函数特性
- EditText:带清空功能的EditText控件
- 从头编译php源代码
- Java日志框架——JCL
- 【数据结构学习笔记】——二叉树的建立、交换、求宽度
- VCL标准化皮肤组件Alphacontrols正式发布v10.24|附下载