1. 程式人生 > >JavaScript 加號操作符細節

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()方法