JavaScript中两个感叹号的作用说明


Posted in Javascript onDecember 28, 2011

先用一个简单的例子说明:

var o={flag:true}; 
var test=!!o.flag;//等效于var test=o.flag||false; 
alert(test);

由于对null与undefined用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于,如果明确设置了o中flag的值(非null/undefined/0""/等值),自然test就会取跟o.flag一样的值;如果没有设置,test就会默认为false,而不是null或undefined。
在jQuery中比较经典的例子如下:(jQuery 1.7.0.js: Line 748)
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; 
}

在使用grep函数的时候,如果给出了第三个参数且非null/undefined/0""/等值,则inv为true,否则为false。这样做的目的就是保证inv和retVal的值都只能在true/false中取,而非其它值,为后续判断提供便利。
Javascript 相关文章推荐
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
Apr 18 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
详解Javascript 中的 class、构造函数、工厂函数
Dec 20 Javascript
js的对象与函数详解
Jan 21 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 Javascript
vue各种事件监听实例(小结)
Jun 24 Javascript
javascript (用setTimeout而非setInterval)
Dec 28 #Javascript
js字符编码函数区别分析
Dec 28 #Javascript
javascript获得服务器端控件的ID的实现代码
Dec 28 #Javascript
Jquery异步请求数据实例代码
Dec 28 #Javascript
javascript判断ie浏览器6/7版本加载不同样式表的实现代码
Dec 26 #Javascript
js使用函数绑定技术改变事件处理程序的作用域
Dec 26 #Javascript
JavaScript中的property和attribute介绍
Dec 26 #Javascript
You might like
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
JS模板实现方法
2013/04/03 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
布同自制Python函数帮助查询小工具
2011/03/13 Python
Python中的高级函数map/reduce使用实例
2015/04/13 Python
Python之读取TXT文件的方法小结
2018/04/27 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python async with和async for的使用
2019/06/20 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
Django xadmin安装及使用详解
2020/10/26 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
电大自我鉴定
2013/10/27 职场文书
六个一活动实施方案
2014/03/21 职场文书
融资租赁计划书
2014/04/29 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
pytorch 如何使用float64训练
2021/05/24 Python