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 getScript动态加载JS方法改进详解
Nov 15 Javascript
js实现拉伸拖动iframe的具体代码
Aug 03 Javascript
js获取指定日期前后的日期代码
Aug 20 Javascript
js螺旋动画效果的具体实例
Nov 15 Javascript
JavaScript异步编程Promise模式的6个特性
Apr 03 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
Sep 10 Javascript
js实现超酷的照片墙展示效果图附源码下载
Oct 08 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
实现React单页应用的方法详解
Aug 02 Javascript
jQuery实现所有验证通过方可提交的表单验证
Nov 21 jQuery
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
原生js canvas实现鼠标跟随效果
Aug 02 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
php提交表单发送邮件的方法
2015/03/20 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
XENON基于JSON变种
2010/07/27 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
纯javascript版日历控件
2016/11/24 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
js实现鼠标拖动功能
2017/03/20 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
python实现宿舍管理系统
2019/11/22 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
美发活动策划书
2014/01/14 职场文书
大学生心理活动总结
2014/07/04 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python