iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

主動轉型

前面我們知道了 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 就沒有被當成數字加進去

所以我們可以根據實際的需要去把值轉型成適合的型別,去得到我們想要的正確的值。

因為前面介紹過數字型別與字串型別,這邊就先介紹了兩個常見的轉型語法,讓大家知道可以怎麼運用。明天會繼續跟大家介紹另外兩個運算子:「比較運算子」跟「邏輯運算子」,明天見囉!


參考資料

線上課程


上一篇
Day13 布林、undefined、null
下一篇
Day15 比較運算子 與 邏輯運算子
系列文
從基礎開始,用 JavaScript 從頭建立起程式肌肉 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言