探讨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 以对象为索引的关联数组
May 19 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
jquery与js函数冲突的两种解决方法
Sep 09 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
JavaScript中的Object对象学习教程
May 20 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
elementUI select组件默认选中效果实现的方法
Mar 25 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 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
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
JS实现文件动态顺序载入的方法
2015/03/07 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
2017/04/18 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
详解Python3.1版本带来的核心变化
2015/04/07 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
python 实现兔子生兔子示例
2019/11/21 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
序列化Python对象的方法
2020/08/01 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
django中cookiecutter的使用教程
2020/12/03 Python
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
教师节商场活动方案
2014/02/13 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
《长江之歌》教学反思
2014/04/17 职场文书