探讨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 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
JS实现在线ps功能详解
Jul 31 Javascript
vue 使用post/get 下载导出文件操作
Aug 07 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(3)
2006/10/09 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP中each与list用法分析
2016/01/08 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
js取得html iframe中的元素和变量值
2014/06/30 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
js实现时间日期校验
2020/05/26 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python3实现点餐系统
2019/01/24 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
Python字符串的常见操作实例小结
2019/04/08 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
秋季运动会表扬稿
2014/01/16 职场文书
追悼会主持词
2014/03/20 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
主题实践活动总结
2014/05/08 职场文书
写给父母的感谢信
2015/01/22 职场文书
高一作文之暖冬
2019/11/09 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
Java实现简单小画板
2022/06/10 Java/Android