iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
自我挑戰組

重新開始 JavaScript系列 第 13

[Day13] JavaScript 的原始型別

  • 分享至 

  • xImage
  •  

JavaScript 的型別分為兩大類,原始型別物件型別,而原始型別有 7 種,其他則是物件型別,今天主要介紹 JavaScript 的原始型別

原始型別 (Primitive Data Type)

JavaScript 的原始型別有以下 7 種,而除了 NullUndefined 外,其他型別都有自己的 屬性 以及 方法,因他們有各自相對應的包裹物件

  • Number 數字型別 - new Number()
  • String 字串型別 - new String()
  • Boolean 布林值 - new Boolean()
  • Null 空
  • Undefined 未定義
  • BigInt 整數數值 - BigInt()
  • Symbol - Symbol()

以下以 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 的保護措施

包裹物件 (Primitive Wrapper)

以下以字串型別作為例子,來查看原始型別的包裹物件:

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

參考文獻

六角學院 - JavaScript 核心篇

MDN - JavaScript 的資料型別與資料結構


上一篇
[Day12] JavaScript 的動態型別
下一篇
[Day14] 運算式與運算子
系列文
重新開始 JavaScript32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言