> 如果有記憶吐司就好了... # 何謂強制轉型、以及如何作到轉換型別? 在JacaScript中強制轉型又可分為明確的和隱含的。 什麼是 **「明確的」強制轉型** 只要是你寫程式碼去做型別轉換的就是明確的強制轉型 那 **「隱含的」強制轉型**又是什麼 隱含的就是你明明沒寫程式碼進行轉型,但偏偏JS又很貼心的幫你自動轉好,那就是隱含的強制轉型囉! ## 明確的強制轉型 ### toString():將型別轉為字串 ```jsx= let a = 123; a = a.toString(); console.log(a, typeof (a))//123 string let b = true; b = b.toString(); console.log(b, typeof (b))//true string ``` ### parseInt():將字串轉為數字 ```jsx= let a = "123"; a = parseInt(a); console.log(a, typeof (a))//123 'number' ``` ## 隱含的強制轉型 基本上當你不同型別用+號加起來,JavaScript就會很貼心的幫你做型別轉換 例如: * 字串 + 字串 * 字串 + 數字 * 字串 + 布林值 * 字串 + undefinded * 字串 + null * 字串 + NaN ```jsx= let a = "你" + "好"; // 你好 let b = "1" + 2;//12 let c = "123" + true;//123true let d = "123" + undefined;//123undefined let e = "123" + null;//123null let f = "123" + NaN;//123NaN ``` --- ## 總結 * **明確的強制轉型**:就是我們人為去強制轉換型別 * **隱含的強制轉型**:就是JavaScript自動幫你轉型 補充: 因為JavaScript是弱型別語言,所以在執行+法運算時,會優先進行字串連接 而在執行 - 法運算時,如果不是強制轉型,則會優先進行數字運算 參考資料: [你懂 JavaScript 嗎?#8 強制轉型(Coercion)](https://cythilya.github.io/2018/10/15/coercion/#%E9%82%8A%E7%B7%A3%E6%83%85%E6%B3%81) [ㄟ問你喔,強制轉型是什麼?轉換型別有規則可循嗎?(布林值、字串篇)](https://karennnnovelty.medium.com/%E3%84%9F%E5%95%8F%E4%BD%A0%E5%96%94-%E5%BC%B7%E5%88%B6%E8%BD%89%E5%9E%8B%E6%98%AF%E4%BB%80%E9%BA%BC-%E8%BD%89%E6%8F%9B%E5%9E%8B%E5%88%A5%E6%9C%89%E8%A6%8F%E5%89%87%E5%8F%AF%E5%BE%AA%E5%97%8E-%E5%B8%83%E6%9E%97%E5%80%BC-%E5%AD%97%E4%B8%B2%E7%AF%87-a9d6d6cc91d) [何謂強制轉型、以及如何作到轉換型別?](https://hackmd.io/IU6H2Jm5RUGiibVmFjvOEw)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up