探讨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修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
动态改变div的z-index属性的简单实例
Aug 08 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
Jan 06 Javascript
vue实现ToDoList简单实例
Feb 07 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
Vue 配合eiement动态路由,权限验证的方法
Sep 26 Javascript
jQuery无冲突模式详解
Jan 17 jQuery
js实现无缝滚动双图切换效果
Jul 09 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
Dec 18 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中__toString()方法用法示例
2016/12/07 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
详解Python文本操作相关模块
2017/06/22 Python
用python做一个搜索引擎(Pylucene)的实例代码
2017/07/05 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python如何统计序列中元素
2020/07/31 Python
Python的log日志功能及设置方法
2019/07/11 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
美国存储和组织商店:The Container Store
2017/08/16 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
教师节商场活动方案
2014/02/13 职场文书
企业道德讲堂实施方案
2014/03/19 职场文书
写给医生的感谢信
2015/01/22 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书
导游词之临安白水涧
2019/11/05 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python