if() ,括号中可以是任何表达式,当然这个表达式的结果不一定是布尔值,ECMAScript 会自动调用Boolean()函数将这个表达式结果转换为布尔值。
Boolean()函数对各种数据类型的转换结果为:
数据类型 | 转换为true的值 | 转换为false的值 |
Undefined | n/a | undefined |
Object | 任何对象,包括{} | null |
Number | 任何非零的数字 | 0和NaN |
String | 非空字符串 | ‘’ |
Boolean | true | false |
特别需要注意的是:if表达式后面的是一个对象时,即使这个对象是{},没有属性,返回值也是true。同理,[],也是一样
总结:
alert(Boolean(null));-->false;
alert(Boolean(undefined));-->false;
alert(Boolean(NaN));-->false;
alert(Boolean([]));-->true;
alert(Boolean({}));-->true;