前端筆記-JavaScript-動態型別
我是誰 我在哪?
前言
相信大家都有聽過 JavaScript 是一種 『動態型別』的語言,但是是怎樣動態,怎樣轉換型別的呢?
題外話,會放一張山豬是因為我每次講到小明我就會覺得他是一隻山豬,讓我們再次呼叫小明。
var ming = '小明';console.log(ming, typeof ming) //小明 string
我們知道當我們這樣宣告小明的時候,ming這個變數的型別會是字串,其中的原理是這樣
變數的型別是在執行階段才確定的
var ming; //創造環境
ming = '小明';//執行階段,這時候才知道是字串console.log(ming, typeof ming) //小明 string
console.log(ming, typeof '小明') //小明 string
JavaScript 的型別是在執行階段才決定的,我們看 typeof ‘小明’是一個字串,代表這個字串本身就帶著型別,而我們將值賦予到 ming 的時候,其實也意味著將型別也賦予到變數上了,從此這個變數就有了型別!
型別是可以改變的
而既然型別是動態的,就表示他是可以隨時改變的,而轉換分成下面兩種
顯性的轉換(Explicit Conversion)
var ming = '小明' // string
ming = 1 // number
隱性的轉換(Implicit Conversion)
比較要注意是隱性的轉換,如果你不清楚轉換的邏輯的話,很容易會誤判它的型別,例如
var x = 1;
console.log(typeof x) // numberx = x + '';
console.log(typeof x) // stringx = x * 3 ;
console.log(typeof x) //number
在宣告變數時 x =1 是 number,加上了 ‘’ 空字串後會透過隱性的轉換變成 string ,最後將值 *3 ,程式會自動將它轉換為 number 。
後記
了解型別的轉換有助於我們在撰寫程式碼的時候更了解當前的值是什麼樣子的型別,以避免一些不必要的錯誤。