js中两个感叹号的原理与用法分析
来源:互联网 发布:ubuntu 14.04 uefi 编辑:程序博客网 时间:2024/05/17 07:00
在javascript中有时会看到有两个!!的用法。我很少用到(本人在js方面是菜鸟),但是在一些开源框架(如jquery)中经常看到。所以参考网上的相关资料总结了一下它的用法。
- var foo;
- alert(!foo);//undifined情况下,一个感叹号返回的是true;
- alert(!goo);//null情况下,一个感叹号返回的也是true;
- var o={flag:true};
- var test=!!o.flag;//等效于var test=o.flag||false;
- alert(test);
这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/""等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。
- grep: function( elems, callback, inv ) {
- var ret = [], retVal;
- inv = !!inv;
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
- return ret;
- }
这是jquery中一个比较经典的例子,
在使用grep函数的时候,如果给出了第三个参数且非null/undefined/0""/等值,则inv为 true,否则为false。这样做的目的就是保证inv和retVal的值都只能在true/false中取,而非其它值,为后续判断提供便利。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- js中两个感叹号的原理与用法分析
- js中两个感叹号的原理与用法分析
- js中两个感叹号的原理与用法分析
- js中两个感叹号的原理与用法分析
- js中两个感叹号的原理与用法分析
- js中两个感叹号的原理与用法分析
- c语言两个感叹号的用法
- VB中感叹号“!”与圆点“.”的用法差异
- VB中感叹号“!”与圆点“.”的用法差异
- Javascript中!!(两个感叹号,双感叹号)的含义
- Javascript中!!(两个感叹号,双感叹号)的含义
- JavaScript中两个感叹号的作用
- JavaScript中两个感叹号(!!)的作用
- JavaScript中两个感叹号的作用
- JavaScript中两个感叹号(!!)的作用
- JavaScript中两个感叹号的作用
- javascript中两个感叹号的作用
- JavaScript中 ! (感叹号)与 !! (双感叹号) 的区别
- Spring mvc中@RequestMapping 6个基本用法小结
- 2013,这一年
- Redis 入门实践
- C#中用ILMerge将所有引用的DLL和exe文件打成一个exe文件
- 总结c++内存错误的典型情况 .
- js中两个感叹号的原理与用法分析
- SpringMVC表单标签简介
- mysql 字段值默认不区分大小写
- JAVA字符串的反转和比较
- jquery表格插件Flexigrid前台 后台 及改变其url等属性
- 在Eclipse中导入android sdk源码
- Android Asset Studio
- 第一辑 回家的路--幸福参照系
- 年终总结——感谢2012