探讨js中的双感叹号判断


Posted in Javascript onNovember 11, 2013

今天看qunit源代码,发现一段很奇怪的代码,虽然能领会他的意思,但是不明白双感叹号起到的作用。

function id( name ) {
    return !!( typeof document !== "undefined" && document && document.getElementById ) &&
        document.getElementById( name );
}

然后去网上查了些资料,他相当于三元运算符,返回boolean值。
var ret = !!document.getElementById

等价于:
var ret = document.getElementById ? true : false;

当值是非空字符串和非零数字返回true,当值是空字符串、0或者null返回false。
var a = " "; alert(!!a);   //true
var a = "s"; alert(!!a);   //true
var a = true; alert(!!a);   //true
var a = 1; alert(!!a);   //true
var a = -1; alert(!!a);   //true
var a = -2; alert(!!a);   //truevar a = 0; alert(!!a);   //false
var a = ""; alert(!!a);   //false
var a = false; alert(!!a);   //false
var a = null; alert(!!a);   //false
Javascript 相关文章推荐
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
关于Jquery操作Cookie取值错误的解决方法
Aug 26 Javascript
javascript 上下banner替换具体实现
Nov 14 Javascript
鼠标滑在标题上显示图片的JS代码
Nov 19 Javascript
js中switch case循环实例代码
Dec 30 Javascript
javascript运行机制之this详细介绍
Feb 07 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
谈一谈javascript闭包
Jan 28 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
JavaScript中的 attribute 和 jQuery中的 attr 方法浅析
Jan 04 Javascript
js时间戳格式化成日期格式的多种方法
Nov 11 #Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 #Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
Nov 11 #Javascript
js中关于一个分号的崩溃示例
Nov 11 #Javascript
javascript中怎么做对象的类型判断
Nov 11 #Javascript
jquery隐藏标签和显示标签的实例
Nov 11 #Javascript
jquery(hide方法)隐藏指定元素实例
Nov 11 #Javascript
You might like
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
12个提高JavaScript技能的概念(小结)
2019/05/09 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
python笔记(2)
2012/10/24 Python
python常规方法实现数组的全排列
2015/03/17 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
python3将变量输入的简单实例
2020/08/19 Python
使用CSS变量实现炫酷惊人的悬浮效果
2019/04/26 HTML / CSS
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
《乡愁》教学反思
2014/02/18 职场文书
家长寄语大全
2014/04/02 职场文书
纪律教育月活动总结
2014/08/26 职场文书
语文教师个人工作总结
2015/02/06 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
党小组推荐意见
2015/06/02 职场文书
环保证明
2015/06/23 职场文书
红领巾广播站广播稿
2015/08/19 职场文书