探讨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的执行顺序 之实战篇
Mar 03 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
Javascript实现快速排序(Quicksort)的算法详解
Sep 06 Javascript
JS ES6中setTimeout函数的执行上下文示例
Apr 27 Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
微信小程序实现搜索框功能及踩过的坑
Jun 19 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 Javascript
Javascript数组及类数组相关原理详解
Oct 29 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
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 和 COM
2006/10/09 PHP
社区(php&&mysql)三
2006/10/09 PHP
.htaccess文件保护实例讲解
2011/02/06 PHP
php写的简易聊天室代码
2011/06/04 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP中“=>
2019/03/01 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
js 函数的副作用分析
2011/08/23 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
Python的randrange()方法使用教程
2015/05/15 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
基于Python绘制个人足迹地图
2020/06/01 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
RIP版本1跟版本2的区别
2013/12/30 面试题
Java中的类包括什么内容?设计时要注意哪些方面
2012/05/23 面试题
会计自我鉴定
2013/11/02 职场文书
毕业生评语大全
2015/01/04 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
MySQL导致索引失效的几种情况
2022/06/25 MySQL