console.log("Why am i a " + typeof + ""); //Why am i a number
一、加号的运算:
1)首先运行加号左右表达式,并将传入ToPrimitive,参考ECMASCRIPT规范
2)表达式操作数其中一个为String,用字符串拼接,返回String( left ) 和 String( right )拼接结果
3)如果一个操作数是对象,对象调用toString()方法,进行转换,然后按情况2)处理
4)其他情况就返回Number( left ) + Number( right ) 的相加结果
二、具体实例:
var Benjamin = {
"benjamin":"Ben"
};
console.log(Benjamin + 1); //[object Object]1
console.log( + ""); //0
console.log( + "Benjamin"); //NaN
console.log(typeof (+ "Benjamin")); //number
console.log(null + 0); //0 等价于Number(null) + 0 即 0 + 0 = 0
console.log(undefined + 0); //NaN 等价于Number(undefined) + 0 即 NaN + 0 = NaN
console.log(null + ""); //null[String]
console.log(undefined + ""); //undefined[String]
console.log(NaN + ""); //NaN[String]
console.log(typeof + ""); //number 等价于console.log(typeof (+ ""))
console.log("Why am i a " + typeof + ""); //Why am i a number