Day 13 JavaScript 的资料型态

JS 的资料型态主要分成物件型态及原始型态。

Object 物件型态

物件型态的资料可以使用属性及方法
ex: 阵列[ ]、物件{ }、函式

Primitive 原始型态

原始型态是一种资料,他不是物件而且也没有属性及方法可以用,他的值是唯读的,记忆体位置都在同个地方,分为 7 大类,其中 BigInt 以及 Symbol 是比较少见的原始型态:

  • 数值(number)
  • 字串(string)
  • undefined
  • null
  • 布林值(boolean)
  • BigInt
  • Symbol

BigInt

用来让我们能更精确的呈现数字。
number 只能呈现 2的53次方内的值,如果超出这个范围就要将数值转换成 BigInt 型态才能正常呈现。
可以在数值後面加一个 n 让他转型成 BigInt。

Symbol

ES6 之後才出现的型态,跟字串很像。

  • 差异:

    • 字串的值的记忆体位置不变
      => 如果用不同常数去指向同样名称的字串,这两个常数会是相等的,
      因为字串的记忆体位置是固定的,代表说他们指向同一个值。
    • Symbol 的值的记忆体位置会变
      => 如果用不同常数去指向同样名称的 symbol,这两个常数会是不相等的
      因为符号的记忆体位置是不固定的,代表说他们指向不同的值,变成像是物件一样。
  • 好处:
    可以让物件里面的属性名称相同,不会被覆盖掉。
    如果属性名称是用字串写的话,遇到相同名称的属性,後面写的会覆盖掉前面写的。
    但如果属性名称是用 symbol 写的话,就不会发生这个问题,两个值都会存在。

举例:

// 符号可以透过Symbol('')产生
// 定义两个同名符号,赋值给两个不同常数
const sym1 = Symbol('foo');
const sym2 = Symbol('foo');

// 将他们都转型成字串
sym1.toString();
sym2.toString();

// 印出 false,代表 sym1、sym2 指向不同值
console.log(sym1 === sym2);
// 印出 true,代表转成字串後是指向同一个值
console.log(sym1.toString() === sym2.toString());

// 定义两个同名物件,赋值给两个不同常数
const obj1 = {'123': 123}
const obj2 = {'123': 123}

// 印出 false,代表 obj1、obj2 指向不同值
console.log(obj1 === obj2)

参考:
[1]MDN:JavaScript 的资料型别与资料结构
[2]重新认识 JavaScript: Day 03 变数与资料型别


<<:  (Day28) ES6 展开运算子与其余参数

>>:  [ Day 13 ] - 如何透过 DOM 抓取网页元素

Contact Form 7 外挂漏洞:上传档案功能可能被恶意利用,受影响网站高达 500 万个以上

Astra Security 昨天发布这个紧急通知,新的 Contact Form 7 补救更新已...

Day.9 进入 ARM 世界: ARM Cortex-M 暂存器介绍

ARM Cortex Overview ARM Architecture 从第七代开始,分为三种配置...

【2022】硬碟资料丢失?试试 5 款超好用的硬碟救援软件

你是否遇到过这样的情况:硬碟被格式化,储存的资料无法获取;硬碟资料被误删而无法找回······硬碟资...

[区块链&DAPP介绍 Day24] Dapp 实战 部署第一个 Dapp

今天我们来尝试看看部署一个 Dapp。要进入之前请先确保,有照着前两天介绍的 metamask &a...

[DAY3]架设Heroku

由於我们要建立一个能够及时回复的聊天机器人所以我们需要给我们回复的程序码一个明确的家,方便能够随时找...