你不知道的Javascript(中)--ToBoolean
javascript中的值可以分为以下两类:
1.可以被强制类型转换为false的值
2.其他(被强制类型转换为true的值)
假值---以下是js的ES规范中定义了的假值:
- undefined
- null
- false
- +0、-0和NaN
- ""-空字符串
假值的不二强制类型转换结果为false。一般除假值以外的都是真值。
假值对象--封装了假值的对象
eg:
var a=new Boolean(false);
var b=new Boolean(0);
var c=new Boolean("");
【注】规范中规定“所有对象都是真值”,所以即使封装的内容是假值,这些对象依旧是真值。
即:Boolean(a&&b&&c)==>true
【注意】在js代码中会出现对象判断为假的用法,但它实际上不属于javascript语言的范畴。跟浏览器有关。浏览器在某些情况下在常规js语法上自己穿件了一些外来值,这些就是"假值对象"。
eg:
document.all,是一个类数组对象,包含了页面上所有元素,由DOM提供(而不是由js引擎提供)给js程序使用。
用document.all在浏览器上强制类型转换后的结果,可被用来判断是否是ie(老版本的),这种判断也许在以后会因为ie对document.all的支持的结束而出现隐患。
真值--假值列表之外的值
eg:
var a="false"; //字符串false --true
var a="0"; //字符串0 --true
var a="''"; //字符串' --true
Boolean(a&&b&&c)==>true。【注】只有空字符串转换后是false。
eg:
var a=[]; //空数组 --true
var b={}; //空对象 --true
var c=function(){}; //空函数 --true
Boolean(a&&b&&c)==>true