遞增和遞減分別有前置型和後置型,這裡不作區分。
下面的程式碼全部是後置型遞增:
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的一種
- 包含有效數字字元的字串
一元操作符“++”,“- -”對於上面的這幾種字串,有如下規則:
1.在應用於一個包含有效數字字元的字串時,先將其轉化為數字值,再執行加減1。字串變數變為數字變數。
2.在應用於一個不包含有效數字字元的字串時,將變數的值設為NaN。字串變數變為數字變數。
其中NaN是一種特殊的Number型別。
注意:
NaN instanceof Number //false
複製程式碼
基本型別不能像這樣檢測型別,因為它不是Number建構函式的一個例項物件。