JavaScript 加号操作符细节
加号操作符规则
- 如果运算数是对象(object),它将会转化成基本类型(string,boolean,number,null,undefined);
- 如果运算数中有一个string,第二个运算数也会转化成string,并且连接起来成为一个新的string。
- 其他情况下,两个运算数转化为数字进行加法运算。
对象转化的规制:
- 如果一个对象类型是Date,可以使用toString()方法
- 在其他情况下使用valueOf()方法,它将返回一个原始值
- 如果valueOf()方法不能返回它的原始值,使用toString()
例子
示例1:数字和对象
var result = 1 + {};//"1[object Object]"
示例2:数字和null
var result = 1+null;//1
1 + null
: 因为操作数没有字符串,根据规则三,null将转换为数字01 + 0
: 两个数字做加法运算
示例3:字符串和null
var result = "dendi"+null;//dendinull
"dendi" + null
: 因为第一个操作数是一个字符串,根据规则二,null将转换为一个字符串”null”- “dendi”+”null”:字符串连接
示例4:数字和undefined
var result = 1+undefined;//NaN
1 + undefined:
因为没有任何一个操作数是字符串,根据规则三,undefined将转换为一个数字NaN
示例5:
var result = + "12";//12(number);
这个比较特殊,是我从JavaScript技巧上面看来的。
一元加操作符(+)放在数值面前,不会对数值产生任何影响。但是在对非数值应用一元加操作符时,会把值转化成Number()类型的值。
- false -> 0;
- true -> 1;
- 字符串会被解析;
- 对象会调用他们的valueOf()和toString()方法