字符串相加的注意點

*下面的代碼所示:

  • 代碼1: 數字字符串參與運算的狀況1
1 console.log(1 + "2" + "2");

很明顯輸出的是122,而且:spa

console.log(typeof (1 + "2" + "2"));

   輸出的是string類型.上面的結果是毫無疑問的.code

 

  • 代碼2: 數字字符串參與運算的狀況2
console.log(1 + +"2" + "2");
console.log(typeof (1 + +"2" + "2"));//string

  代碼2中的第一個輸出的是32, 由於+"2"會默認把字符串2轉成number類型的2,因此再跟後面的字符串相加等到最終的32,而且,輸出的仍然是字符串類型.blog

 

  • 代碼3: 字符串參與運算
1 console.log( "A" - "B" + "2");//NaN2
2 console.log( "A" - "B" + 2);//NaN

  第一行輸出的是NaN2,是由於 "A" - "B"輸出的是NaN, 當NaN與字符相加的是,NaN會默認轉成字符串類型,即"NaN",因此最終結果是NaN2字符串

  第二行輸出的是NaN,毫無疑問,只是爲了跟第一行作對比.string

 

  • 代碼4: undefined 和 null 參與運算
1 console.log(undefined + 2);
2 console.log(null + 2);

  這裏也涉及到了默認轉換問題, undefined和null與數字相加會先默認轉成數字類型,而後再進行相加.此時,咱們須要看一個代碼:console

1 console.log(Number(undefined));//NaN
2 console.log(Number(null));//0

  結果就出來了,要記住,undefined默認轉成數字類型是NaN,而null默認轉成數字類型是0,這也是undefined和null的其中一個區別. class

  因此,綜上所述,代碼4分別輸出的是NaN 和 2.margin

相關文章
相關標籤/搜索