最近在在看Javascript代码时,会经常看到代码中使用双感叹的用法,如
var a = !!result.flag;
开始的时候,不怎么明白为什么一定要这么做?后来想想,应该是在下文中要对a进行判断。那么,有人可能会问,即使用不用又感叹号,也能正常的判断啊。的确如此,但我想,经过双感叹号之后,a的值就变成了一个boolean值了,这样会让判断语句看上去更直观吧。
因为大家都知道,js是一个弱类型语言,在JS中使用如下语句判断时:
if(!a) { alert("a ia not true"); }
当a的值为null/undefined/0/NaN/""(空字符串)时,上面的if条件都是成立的,从而都会弹出“a ia not true”;但是从语义来上看的话,可能并不能么好理解。明明a是null或者undefined,可为什么弹出的消息却是“a ia not true”。为了避免这种理解上的差异,就可以使用双感叹号了。
也就是说,双感叹号其实是简单的,没什么玄乎的,下面的代码可以说明这一点:
<!DOCTYPE html> <html> <head> <title>test</title> <script> var a = {a:112}; var b = a.b; var c = !a.b; var d = !!a.b; var e = a.a; var f = !a.a; var g = !!a.a; </script> </head> <body> </body> </html>
debug截图(注意看右边的 watch expressions哦):
相关推荐
用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值;如果没有设置,test就会默认为false,而不是null或undefined
的情况,本文即以实例形式较为深入的分析javascript中2个感叹号的用法。分享给大家供大家参考之用。具体分析如下: javascript中的!!是逻辑”非非”,即是在逻辑“非”的基础上再”非”一次。通过!或!!可以将很多...
求两个日期的差值,在平常用的应该很多的吧,希望能给你带来帮助....
JavaScript中两个字符串的匹配_.docx
主要介绍了JavaScript中判断两个字符串是否相等的方法,是JS入门学习中的基础知识,需要的朋友可以参考下
javascript的两个滑动杆控件。外观还可以。
两个比较常用的Eclipse中javascript插件jsEditor jsEclipse
javascript 两个页面之间传值 使用window.open()
JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。 hasOwnProperty()使用方法: object.hasOwnProperty(proName)其中参数object是必选项。一个对象的实例。proName是必...
JavaScript中通用的两个非空检测函数 适合新手参考学习哦
两本书:10步学习 JavaScript(英文版)和JavaScript快速查询手册的pdf文档。
JavaScript中文参考手册,对于你的JavaScript学习起到非常大的作用
主要介绍了javaScript中两个等于号和三个等于号之间的区别,还不知道的朋友可以学习下
javascript变量作用域 希望对大家有帮助
主要介绍了JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别的相关资料,需要的朋友可以参考下
AJAX (Asynchronous JavaScript and XML, 异步 JavaScript 及 XML 技术) 是个新词,但内涵是两个存在已有一段时间的 JavaScript 功能。这两种功能以往一直被忽略,在 Gmail、Google suggest 及 Google Maps 出现后才...
本文实例讲述了JavaScript比较两个对象是否相等的方法。分享给大家供大家参考。具体如下: 在Python中可以通过cmp()内建函数来比较两个对象所包涵的数据是否相等(数组、序列、字典)。但是在javascript语言中并没有...
javascript中比较运算符'=='与'==='可能大家用的比较多,但是大家对他的区别不是很清楚,接下来小编给大家介绍下js中三个等号和两个等号的区别(== 和 ===),感兴趣的朋友可以参考下