探讨js中的双感叹号判断

前端技术 2023/09/01 JavaScript
今天看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);   //true

var a = 0; alert(!!a);   //false
var a = \"\"; alert(!!a);   //false
var a = false; alert(!!a);   //false
var a = null; alert(!!a);   //false

本文地址:https://www.stayed.cn/item/3101

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。