2012年10月26日星期五

js双感叹号判断

js双感叹号判断

  今天看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);   //truevar a = "s"; alert(!!a);   //truevar a = true; alert(!!a);   //truevar a = 1; alert(!!a);   //truevar a = -1; alert(!!a);   //truevar a = -2; alert(!!a);   //true var a = 0; alert(!!a);   //falsevar a = ""; alert(!!a);   //falsevar a = false; alert(!!a);   //falsevar a = null; alert(!!a);   //false

TAG: