以下面的例子說明
var name = '小明'
// 創造階段
var name;
// 執行階段
name = '小明';
name 這個變數要到了執行階段才會被確立型別為 '小明' 的字串。
這個時候,我們可以利用 typeof
來做型別的確認
var name = '小明'
console.log(typeof(name)); // string
console.log(typeof('小明')); // string
透過 typeof
,我們可以知道執行到現在的時間點,該變數的型別為甚麼。
同時直接檢查值得型別,也可以得到預期的結果,例如檢查為 '小明' 字串,得到的回應就是 string。
再來看看另一段範例程式:
var num = 1;
console.log(typeof(num)); // number
num = '文字';
console.log(typeof(num)); // string
所以透過這段程式碼的範例可以看到,變數的型別會隨著賦值不同而轉換成不同的型別。
另外再行別轉換的內容中,也有特別要注意的兩個陷阱。
就是變數直接被賦予另外一個值得時候,就稱為顯性的轉換。
如同上方的範例,num 這個變數一開始被賦予數字 1,但後來又被賦予字串 '文字'。
所以在被賦值完之後,其型別就從數字(number)轉變為字串(string)。
他在轉換的過程中,可能會透過某些運算方式,改變其變數的內容以及型別,以下舉兩個例子:
var num = 1;
num = num + '';
console.log(num, typeof(num)); // 1, string
第一個就是在針對數字的時候,+上字串的內容,該變數就會變為字串。
第二個內容接續剛剛的程式碼:
var num = 1;
num = num + '';
console.log(num, typeof(num)); // 1, string
num = num * 3;
console.log(num, typeof(num)); // 3, number
對寫入數字字串的變數進行乘法的話,則會再被轉換為數字型別。
以上就是這章的分享,希望有幫助到大家,汪汪~