其他基本类型转化为字符串
console.log("" + null); // "null"
console.log("" + undefined); // "undefined"
console.log("" + false); // "false"
console.log("" + true); // "true"
console.log("" + 0); // "0"
console.log("" + NaN); // "NaN"
console.log("" + Infinity); // "Infinity"
其他基本类型转化为数字
console.log(+null); // 0
console.log(+undefined); // NaN
console.log(+false); // 0
console.log(+true); // 1
console.log(+""); // 0
console.log(+'1'); // 1
console.log(+'1x'); // NaN
引用类型转换为字符串和数字
引用类型转换为字符串:优先调用toString方法(如果有),否则,调用valueOf方法(如果有),其他报错
引用类型转化为数字:优先调用valueOf方法(如果有),否则,调用toString方法(如果有),其他报错
var a = {};
console.log(a.toString()); // "[object Object]"
console.log(a.valueOf()); // {}
console.dir(a + ""); // "[object Object]"
console.dir(+a); // NaN
== 比较隐式转换