探讨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 相关文章推荐
分析 JavaScript 中令人困惑的变量赋值
Aug 13 Javascript
动态样式类封装JS代码
Sep 02 Javascript
JavaScript中实现块作用域的方法
Apr 01 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
AngularJs页面筛选标签小功能
Aug 01 Javascript
JS碰撞运动实现方法详解
Dec 15 Javascript
js模拟微博发布消息
Feb 23 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
微信小程序云开发 生成带参小程序码流程
May 18 Javascript
js如何验证密码强度
Mar 18 Javascript
js实现电灯开关效果
Jan 19 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
php gzip压缩输出的实现方法
2013/04/27 PHP
深入浅出php socket编程
2015/05/13 PHP
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
javascript 学习笔记(一)DOM基本操作
2011/04/08 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python实现串口自动触发工作的示例
2019/07/02 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Flask 上传自定义头像的实例详解
2020/01/09 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
远程调用的原理
2014/07/05 面试题
Final类有什么特点
2012/04/25 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
应聘美工求职信
2013/11/07 职场文书
家长对老师的感言
2014/03/11 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
2014年环保工作总结
2014/11/26 职场文书
故意杀人案辩护词
2015/05/21 职场文书
2015年征兵工作总结
2015/07/23 职场文书
物业公司管理制度
2015/08/05 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android