探讨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 div 弹出可拖动窗口
Feb 26 Javascript
Jquery 实现弹出层插件
Jan 28 Javascript
使用pjax实现无刷新更改页面url
Feb 05 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
详解堆的javascript实现方法
Nov 29 Javascript
JavaScript变量类型以及变量作用域详解
Aug 14 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
Aug 11 Javascript
vue 实现在函数中触发路由跳转的示例
Sep 01 Javascript
js中事件对象和事件委托的介绍
Jan 21 Javascript
JS实现碰撞检测效果
Mar 12 Javascript
js实现轮播图特效
May 28 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
基于PHP静态类的原罪详解
2013/05/06 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP基于接口技术实现简单的多态应用完整实例
2017/04/26 PHP
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
vue-cli项目配置多环境的详细操作过程
2018/10/30 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
python实现两个文件合并功能
2018/04/01 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Django模板Templates使用方法详解
2019/07/19 Python
Django缓存系统实现过程解析
2019/08/02 Python
Python for循环及基础用法详解
2019/11/08 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
Python中生成ndarray实例讲解
2021/02/22 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
《锄禾》教学反思
2014/04/08 职场文书
应用心理学专业求职信
2014/08/04 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
建党伟业的观后感
2015/06/01 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android