探讨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 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
AngularJS中取消对HTML片段转义的方法例子
Jan 04 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
Jun 14 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
vue-swiper的使用教程
Aug 30 Javascript
js面向对象方式实现拖拽效果
Mar 03 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
简单易用的计数器(数据库)
2006/10/09 PHP
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
jquery表单验证插件validation使用方法详解
2017/01/20 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
python比较2个xml内容的方法
2015/05/11 Python
Python入门教程之if语句的用法
2015/05/14 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
python3学习之Splash的安装与实例教程
2018/07/09 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
python中删除某个元素的方法解析
2019/11/05 Python
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
三八妇女节演讲稿
2014/05/27 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
Android中View.post和Handler.post的关系
2022/06/05 Java/Android