今天看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