前面我們知道了 JavaScript 有個貼心又討厭的特色就是自動轉型。當然,我們也可以因為目的需要自己做轉型,這邊介紹兩種轉型的方法:
把原本是字串型別的數字轉變成數字型別,這時我們可以使用 parseInt
這個語法:
```=javascript
let myAge = "18";
console.log(typeof myAge); // string 此時為字串;
let age2 = parseInt("18");
console.log(typeof age2); // number 使用 parseInt 會被轉為數字型別
```
為什麼需要自己去把字串轉型成數字呢?因為有時候我們在透過網頁取值的時候,有時候取出來的值是字串(通常從文字欄位裡面取出來的值都是字串),我們必須把它們轉型成數字才能去做正確的加總,這時候就需要使用 parseInt
去處理裡面的文字。
假設一個情境,明天是小明的生日,過了今晚 12 點後小明就是 30 歲了,他在個人頁面上的生日應該會在過 12 點的時候從 29歲 跳成 30歲,但發現出現的不是 30 歲,而是 291 歲,為什麼會這樣呢?
這時可以合理懷疑,個人頁面在取值取出來的時候是一個字串,而不是數字,前面有介紹過如果字串跟數字相加的話,JavaScript 會將數字自動轉型成字串再連接再一起,這時就會變成 291 了。
```=javascript
let age = "29";
console.log(age+1); // 291
```
但我們想要的是 30 歲呀,這時候可以怎麼做呢?我們就可以使用 parseInt
來把原本是字串的 "29"
轉為數字型別:
```=javascript
let age = "29";
age = parseInt(age);
console.log(age+1); // 30
```
經過轉型後,就可以使用我們想要的數字相加得到正確的 30 歲囉!
要注意的是,如果把文字片段的字串用 parseInt
想轉成數字型別,會得到 NaN(Not a Number)
字串既然可以轉成數字,那能不能反過來讓數字變成字串呢?當然是肯定的,我們可以使用 .toString()
這個方法,一樣設想一個小情境:
>有一支電話號碼是 0912345678,我們想要在前面加上區碼 886
```=javascript
let phoneNum = 0912345678;
console.log(886+phoneNum); // 912346564
```
可以看到 886 不是被放在電話前面,而是被加總進去了
這時我們就可以使用 .toString()
來協助將數字轉成字串
```=javascript
let phoneNum = 0912345678;
phoneNum = phoneNum.toString();
console.log(typeof phoneNum); // string
console.log(+886+phoneNum); // 886912345678
```
電話號碼被轉成字串後跟前面的 886 連接起來,886 就沒有被當成數字加進去
所以我們可以根據實際的需要去把值轉型成適合的型別,去得到我們想要的正確的值。
因為前面介紹過數字型別與字串型別,這邊就先介紹了兩個常見的轉型語法,讓大家知道可以怎麼運用。明天會繼續跟大家介紹另外兩個運算子:「比較運算子」跟「邏輯運算子」,明天見囉!
線上課程