[JavaScriptWeird]No.12 型別與 JavaScript

前言

本篇要記錄的是 JavaScript 的一個小觀念「型別」, JavaScript 很特殊,不同於其他程式語言,特別是在變數的資料與型別的部分,JavaScript 處理它們的方式不太一樣。

動態型別 (Dynamic Typing)

這是一個描述 JavaScript 處理型別方式的名詞,意思就是不需要告訴 JavaScript 變數是何種型別資料、不必再程式碼內寫出來,JavaScript 會在運行程式時知道。

也就是說當我們執行程式時,一個變數可以在不同時候有不同型別,因為型別都是程式執行時才知道的,因為 JavaScript 是動態型別的關係,我們不需要關鍵字來宣告變數的型別,像是:

1
2
3
var isNew = true; //no errors  
isNew = 'yes!';
isNew = 1;

JavaScript 會根據我們設定的值,決定要給這個變數什麼型別。

靜態型別 (Static Typing)

像是其他的程式語言 (C#、Java),就是使用靜態型別的方式處理,這種方式必須一開始就告訴編輯器,我們的變數是什麼型別,但如果你將其他型別的值放入就會導致錯誤,如:

1
bool isNew = 'hello'; //error

後記

初次學習 JavaScript 的時候會覺得這個東西很方便,但是實際上這樣也是很危險的,變成我們必須很明確地知道這個變數目前的型別是什麼,否則最後運算出來可能不會是我們要的結果。這種情況反而會比較喜歡靜態型別,直接把型別決定好,這樣可以避免一些曖昧不明的情況發生,也比較方便除錯。

0%