一元操作符“++”,“- ” 之強制轉換數值

邵天宇Soy發表於2019-04-30

遞增和遞減分別有前置型和後置型,這裡不作區分。

下面的程式碼全部是後置型遞增:

var str = "z";
console.log(str++)		//NaN
console.log(typeof str)		//number
複製程式碼
var str = "123abc";
console.log(str++)		//NaN
console.log(typeof str)		//number
複製程式碼
var str = "123";
console.log(str++)		//123
console.log(typeof str)		//number
複製程式碼

以上三段程式碼分別對應著三種字串:

  1. 不包含有效數字字元的字串
  2. 數字和其他字元結合的字串,不是有效的數字字串,也屬於1的一種
  3. 包含有效數字字元的字串

一元操作符“++”,“- -”對於上面的這幾種字串,有如下規則:

1.在應用於一個包含有效數字字元的字串時,先將其轉化為數字值,再執行加減1。字串變數變為數字變數。

2.在應用於一個不包含有效數字字元的字串時,將變數的值設為NaN。字串變數變為數字變數。

其中NaN是一種特殊的Number型別。

注意:

NaN instanceof Number  //false
複製程式碼

基本型別不能像這樣檢測型別,因為它不是Number建構函式的一個例項物件。

相關文章