值为flase的有:
false 0 "" //空串 null undefined NaN
除了以上的之外的都是ture,包括"0" (zero in quotes), "false" (false in quotes) , empty functions, [](空数组), and {}(empty objects),都是为true
var a = !!(0); // false var b = !!("0"); // true
为false的类型之间的比较:
false, 0 (zero), and "" (empty string)这三个都是"=="相等的
var c = (false == 0); // true var d = (false == ""); // true var e = (0 == ""); // true
null 和 undefined 除了他们自己本身相比较是"=="相等的,与其他的值相比较是不相等的
var f = (null == false); // false var g = (null == null); // true var h = (undefined == undefined); // true var i = (undefined == null); // true
还有一个比较特殊的NaN,他和任何一个值都不相等
var j = (NaN == null); // false var k = (NaN == NaN); // false
typeof(NaN)返回的“number”,一般我们通过isNaN()来判断一个值是不是NaN
上面的情况,如果使用“===”严格全等和“!==”严格不等,情况又不太一样了,这两个比较的是包括了类型和值
var l = (false == 0); // true var m = (false === 0); // false
附上两适用的方法:
1.检查是否位空数组
var n = ([].length == 0) // ture
2.检查是否位空对象
var obj = {}; for (var i in obj){ if(obj[i]) { return true; } else { return false; } }