探讨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 相关文章推荐
图像替换新技术 状态域方法
Jan 28 Javascript
使用CSS样式position:fixed水平滚动的方法
Feb 19 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
javascript实现微信分享
Dec 23 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
详解js数组的完全随机排列算法
Dec 16 Javascript
JS简单判断函数是否存在的方法
Feb 13 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
详谈innerHTML innerText的使用和区别
Aug 18 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
关于Js中new操作符的作用详解
Feb 21 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
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
php 使用post,get的一种简洁方式
2010/04/25 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
js获取height和width的方法说明
2013/01/06 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
2015/09/06 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现图片转字符画的示例
2017/08/22 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
python学习笔记之多进程
2020/08/06 Python
浅谈pc和移动端的响应式的使用
2019/01/03 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
开学季活动策划方案
2014/02/28 职场文书
研究生个人学年总结
2015/02/14 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
2015年征兵工作总结
2015/07/23 职场文书
中学教代会开幕词
2016/03/04 职场文书
pytorch 两个GPU同时训练的解决方案
2021/06/01 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android