JavaScript 是動態型別的程式語言,指的是變數的型別是可以更換的,
而 JavaScript 執行的過程中,會有創造階段和執行階段,
JavaScript 會在執行階段時才確立型別,
而我們如果要確認型別的話,可以使用 typeof
來進行確認,
而變數中的型別是根據賦予的值所決定的,因此變數和該變數的值型別會一樣
var myName = 'weiwei';
// 解析
// 創造階段
var myName;
// 執行,此時才將值賦予到變數中
myName = 'weiwei';
console.log(typeof myName); // string
console.log(typeof 'weiwei') // string
因為 JavaScript 變數的型別是可以更換的,
而型別轉換又可分為顯性的轉換和隱性的轉換
當一個變數從原有的值被賦予另一個型別的值,
稱為顯性的轉換(Explicit conversion)
var num = 1;
console.log(typeof num); // number
num = 'weiwei';
console.log(typeof num); // string
上方範例中,num
的型別原來是 number
,
而賦予值 'weiwei'
時,型別轉為 string
,
這就是顯性的轉換(Explicit conversion)
在運算過程中所產生的型別變化,
稱為隱性的轉換(Implicit conversion)
var num = 1;
console.log(1, typeof num); // 回傳 1 number
num = num + '';
console.log(1, typeof num); // 回傳 1 string
num = num * 3;
console.log(1, typeof num); // 回傳 3 number
上方範例中,num
原本的型別為 number
,值為 1
再加上空字串後,型別則轉換成 string
,值為 1
此時再將 num * 3
,型別則轉換成 number
,且值變成 3
這就是隱性的轉換(Implicit conversion)