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中next方法用法实例
Apr 24 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
jquery-tips悬浮提示插件分享
Jul 31 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
基于axios封装fetch方法及调用实例
Feb 05 Javascript
javascript闭包的使用之按钮切换功能
Aug 30 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
js实现的订阅发布者模式简单示例
Mar 14 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
Oct 27 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大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
javascript的事件描述
2006/09/08 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
jquery动态添加option示例
2013/12/30 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
JS判断form内所有表单是否为空的简单实例
2016/09/09 Javascript
JS验证不重复验证码
2017/02/10 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
Vue框架之goods组件开发详解
2018/01/25 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
Python Property属性的2种用法
2015/06/21 Python
Python利用IPython提高开发效率
2016/08/10 Python
pandas带有重复索引操作方法
2018/06/08 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
护理自荐信
2013/10/22 职场文书
开会迟到检讨书
2014/01/08 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
2014年督导工作总结
2014/11/19 职场文书
党员民主生活会材料
2014/12/15 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
小学同学聚会感言
2015/07/30 职场文书
银行安全保卫工作总结
2015/08/10 职场文书
初中语文教师研修日志
2015/11/13 职场文书
创业计划书之宠物店
2019/09/19 职场文书
导游词之无锡梅园
2019/11/28 职场文书