JavaScript 加号操作符细节

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将转换为数字0
  • 1 + 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()方法

猜你喜欢

转载自blog.csdn.net/gunner6/article/details/51479676