探讨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类型检查实现代码
Oct 29 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
分享一个自己动手写的jQuery分页插件
Aug 28 Javascript
js+html5操作sqlite数据库的方法
Feb 02 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
js实现获取鼠标当前的位置
Dec 14 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
Sep 13 Javascript
JavaScript字符和ASCII实现互相转换
Jun 03 Javascript
详解微信小程序动画Animation执行过程
Sep 23 Javascript
js实现自定义滚动条的示例
Oct 27 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中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
动态Axios的配置步骤详解
2018/01/12 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
Js视频播放器插件Video.js使用方法详解
2020/02/04 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
python实现马耳可夫链算法实例分析
2015/05/20 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python接口测试文件上传实例解析
2020/05/22 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
军训自我鉴定
2014/01/22 职场文书
行政主管职责范本
2014/03/07 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
幼师求职自荐信
2014/05/31 职场文书
中药学自荐信
2014/06/15 职场文书
品牌转让协议书
2014/08/20 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
看上去很美观后感
2015/06/10 职场文书
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫