iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
1
自我挑戰組

JavaScript核心篇系列 第 9

【JavaScript 核心】原始型別 & 物件型別

  • 分享至 

  • xImage
  •  

原始型別分為以下七種:

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

這邊需要特別注意的地方是 console 檢查 null 型別時,會出現 object

這是 JavaScript 一直以來的 bug,但由於太長久而無法去修正此錯誤。

除了以上之外的型別,基本上都是物件型別

這邊來講比較新的屬性 BigIntSymbol


BigInt

根據 MDN 文件說明,

BigInt 是一個內建的物件,提供了表示大於 "2 的 53 次方" 的整數的功能 ("2 的 53 次方" 是 JavaScript 原生的 Number 能夠表示的最大值)

使用方式就是在數字後面加一個 n
ex: 147n3n

啊...所以到底是幹嘛的?

BigInt 可以展現Number 更大範圍的數值,常使用在金融領域。
它可以比 Number 更準確的表示數字,※BigInt只能用整數

Number 基於 IEEE 754 的規範,在進行一些運算時會遇到像下面這個經典問題

0.1 + 0.2 = 0.30000000000000004

Number VS BigInt
範例參考知乎

// Number
1234567890123456789 * 123
>> 151851850485185200000

// BigInt
1234567891023456789n * 123n
>> 151851850595885185047n

這樣就看得出來哪個比較精確了吧!


Symbol

Symbol 用來創建 唯一的值

var sym1 = Symbol();
var sym2 = Symbol();
sym1 === sym2
//false

var sym3 = Symbol('foo');
Symbol("foo") === Symbol("foo"); 
// false

注意:當我們在宣告型別時,應避免用建構式來宣告。

因為這種用建構式宣告的型別,它並不是原始型別,而是一個物件型別。

var e = new String(a);
console.log(typeof e); 
//object

小記:
本來有點不知該怎麼介紹這篇的主題
後來決定寫我也不熟的新屬性
看了很多文章
這次更加認識了 Symbol 和 BigInt
Symbol 的部分還沒能有更好的理解,只知道它是唯一值、可以避免名稱衝突
有興趣的人可以看看下面的參考連結


參考資料:
MDN 文件 BigInt
知乎詳細的 BigInt 介紹
MDN 文件 Symbol
更詳細的 Symbol 介紹
JavaScript 為什麼要有 Symbol 類型?


上一篇
【JavaScript 核心】動態型別
下一篇
【JavaScript 核心】運算子 & 優先性 & 相依性
系列文
JavaScript核心篇19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言