JavaScript中值的固有布尔属性及其比较
2012-07-19 09:24 @影子@ 阅读(559) 评论(0) 编辑 收藏 举报
固有的布尔属性
值在js中存在一个固有的布尔值。以下的值总是false的,他们是:
false
0
"" (空字符串)
null
undefined
NaN (Not-a-Number)
另外,有些值是true的,"0" (0在引号中),"false"(false在引号中),空函数,空数组,空对象。
- var a = !!(0); // variable is set to false
- var b = !!("0"); // true
固有false值的比较
false、 0 、"" (空字符串) 是相等的,并且可以进行比较
- 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
而,null 和 undefined 和其他所有的值比较都是不相等的。
最后,NaN和任何值比较都是不相等的,包括自己。
- var j = (NaN == null); // false
- var k = (NaN == NaN); // false
另外,必须明确typeof(NaN)返回的是
"number" ,在核心js中有个函数isNaN()可以去直接判断这个值是否是NaN
严格等于
==是比较两个值
===也是一样的功能,但是===要求的比较严格
==会在把两个值自动转换成同类型后再比较,而===在比较前不转换
所以严格等于时候,flase值的比较和普通等于的比较结果有不同,应注意区分
- var l = (false == 0); // true
- var m = (false === 0); // false
参考文章:http://www.sitepoint.com/javascript-truthy-falsy/