JavaScript 的型別分為兩大類,原始型別
與 物件型別
,而原始型別有 7 種,其他則是物件型別,今天主要介紹 JavaScript 的原始型別
JavaScript 的原始型別有以下 7 種,而除了 Null
及 Undefined
外,其他型別都有自己的 屬性
以及 方法
,因他們有各自相對應的包裹物件
以下以 typeof
來檢驗型別:
var a, b, c, d, e;
console.log(typeof a); // undefined
b = 1;
console.log(typeof b); // number
c = '文字';
console.log(typeof c); // string
d = true;
console.log(typeof d); //boolean
e = null;
console.log(typeof e); // object
console.log(typeof f); // undefined
注意:
變數 a
雖然有宣告但並未賦值,為系統給的初始值 undefined
,所以型別為 undefined
null
使用 typeof
得出的型別是 object
,這是 JavaScript 長久以來的錯誤,而因為許多網站透過這種錯誤來完成網站的應用,所以也無法做更改,一直沿用到現在變數 f
,但使用 typeof f
還是可以的出 undefined
,這是因為 typeof
針對 is not defined
的保護措施以下以字串型別作為例子,來查看原始型別的包裹物件:
var a = '文字';
var b = new String(a);
console.log(b); // String {'文字'}
點開 String {'文字'}
可看到字串的包裹物件,而其中 Prototype
為包裹物件的原型,所有的方法也放在內,例如 length 方法、toUpperCase 方法、trim 方法,而在操作原始型別時,會自動把包裹物件套用,所以原始型別可以用包裹物件的所有方法,如下圖所示:
注意:
宣告型別時,盡量不要用 new String(); - 建構式
來做宣告,主要是因建構式所宣告的型別不是原始型別,而是物件型別,操作與原始型別是不太一樣的
var a = '文字';
var b = new String(a);
console.log(typeof a); // string
console.log(typeof b); // object