类型转换
基本原则:
- null和undefined相等
- 基本类型(string,number,boolean)与number比较都会被转换成number
- object类型比较会调用(valueOf,doSring)
- Date对象是object类型中的特例(优化先尝试toString,再valueOf)
例子
console.log("" == '0'); false ;//字符串与字符串之间的比较 ""!="0"
console.log(0 == ''); true; //number与string 比较时 会尝试吧string装换为数值 空字符为0
console.log(0 == '0'); true // 字符串 "0"会被装换成0 再进行比较
console.log([] == ![]); true // 布尔与object比较,原则3,原则2
var a = 0, b = {};a==b false // number与object比较,原则3
if的判断
if()括号内的表达式都会被装换成boolean类型;
if("hello"){
console.log("hello");
}//会输出 "hello"为非空字符串 为true;
if(""){
console.log("false");
}//不会输出 空字符串转换成boolean为false;
if(" "){
console.log(" 空格字符 != 空字符串”")
}//会输出 空格字符也属于字符串;
if([0]){
console.log("array");
}//会输出 object类型装换成boolean为true;
if("0.00"){
console.log("true");
}//任何非空字符串都为true
boolean转换原则
- undefined与null都为false;
- Boolean 直接判断
- Number 0与NaN为false,其它都为true;
- String 空字符为false,其它都为true;
- object 为true;