探讨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 相关文章推荐
Raphael一个用于在网页中绘制矢量图形的Javascript库
Jan 08 Javascript
js事件绑定快捷键以ctrl+k为例
Sep 30 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 Javascript
深入理解JavaScript中为什么string可以拥有方法
May 24 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
jQuery的ajax下载blob文件
Jul 21 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
Aug 02 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
Redux实现组合计数器的示例代码
Jul 04 Javascript
javascript条件式访问属性和箭头函数介绍
Nov 17 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
php Static关键字实用方法
2010/06/04 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
PHP线程的内存回收问题
2016/07/08 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
js实现简单的秒表
2020/01/16 Javascript
JavaScript类的继承多种实现方法
2020/05/30 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
广州某公司软件工程师面试题
2014/12/22 面试题
大学生求职自荐信
2013/12/12 职场文书
政协委员个人总结
2015/03/03 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
七年级作文之秋游
2019/10/21 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
python装饰器代码解析
2022/03/23 Python