探讨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类中定义原型方法的两种实现的区别
Mar 08 Javascript
项目实践之javascript技巧
Dec 06 Javascript
json跟xml的对比分析
Jun 10 Javascript
点击文章内容处弹出页面代码
Oct 01 Javascript
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 Javascript
canvas实现图像截取功能
Feb 06 Javascript
原生js实现可拖拽效果
Feb 28 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
javascript利用键盘控制小方块的移动
Apr 20 Javascript
Vue+penlayers实现多边形绘制及展示
Dec 24 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 超链接 抓取实现代码
2009/06/29 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
Ajax基础知识详解
2017/02/17 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python 以16进制打印输出的方法
2018/07/09 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
python实现Virginia无密钥解密
2019/03/20 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
党员干部一句话承诺
2014/05/30 职场文书
药剂专业自荐书
2014/06/20 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
Java线程的6种状态与生命周期
2022/05/11 Java/Android