JavaScript ES6 Object – React 白話文運動 02

更新於 2024/11/21閱讀時間約 7 分鐘

前言

前一篇 JavaScript ES6介紹了

  1. let、const、var 差異
  2. 樣板字面值(Template Literals)
  3. 箭頭函式(Arrow Function)

而今天會接續介紹 JavaScript ES6其他新穎的語法

  1. 物件解構(Object Destructuring)
  2. 物件語法強化(Object Literal Enhancement)
  3. 陣列解構(Array Destructuring)
  4. 延展運算子(Spread Operator)

ES6 物件解構(Object Destructuring)

解構賦值(Destructuring Assignment)可以讓我們針對物件拆出特定的值並且做使用

我們也可以搭配前一篇所提及的Arrow Function 一起做使用,對此進行解構

不使用解構的情況

const person = {
person_name: "Hogan",
phone: "0123456789",
email: "hoganlin.tech@gmail.com"
}

const showInfo = () => {
console.log(`name: ${person.person_name}\nphone: ${person.phone}`)
}

showInfo()
//name: Hogan
//phone: 0123456789

使用解構的情況

const person = {
person_name: "Hogan",
phone: "0123456789",
email: "hoganlin.tech@gmail.com"
}

const showInfo = ({ person_name, phone }) => {
console.log(`name: ${person_name}\nphone: ${phone}`)
}

showInfo(person)
//name: Hogan
//phone: 0123456789

ES6 物件語法強化(Object Literal Enhancement)

物件語法強化(Object Literal Enhancement)可以想像成反向的解構,可以透過此語法將變數組合成物件。

const person_name = "Hogan";
const phone = "0123456789";
const email = "hoganlin.tech@gmail.com";
const printEmail = () => {
console.log(`email: ${person.email}`)
}
const person = {
person_name,
phone,
email,
printEmail
}

console.log(`name: ${person.person_name}\nphone: ${person.phone}`);
person.printEmail();
//name: Hogan
//phone: 0123456789

陣列解構(Array Destructuring)

除了物件以外,也可以針對陣列進行解構,可以透過逗號來去取得值。

const [firstName] = ["Hogan", "Pipi", "Fifi", "Bobo"]
console.log(firstName)
//Hogan
const [, , , fourthName] = ["Hogan", "Pipi", "Fifi", "Bobo"]
console.log(fourthName)
//Bobo

ES6 延展運算子(Spread Operator)

延展運算子(Spread Operator)的語法由三個句點組成 …。並且可購透過延展運算子來實作一些功能,也是現代語法中常使用的語法之一。

組合陣列

透過延展運算子,可以將animal1以及animal2組合並且指定為animal

const animal1 = ["cat", "dog"]
const animal2 = ["elephant", "zibra"]
const animal = [...animal1, ...animal2]

console.log(animal);
//[ 'cat', 'dog', 'elephant', 'zibra' ]

複製陣列

在一些情況下,我們會在取得陣列值時,會修改原有的陣列,因此這種情況下會希望可以快速複製一個陣列。例如:想要獲得一個陣列的最後一個值,就可以使用延展運算子。

這邊先舉不使用延展運算子的做法,可以發現程式執行了reverse() 之後,會修改原有的陣列

const animal = ["cat", "dog"]
const [last] = animal.reverse();

console.log(last);
// dog
console.log(animal);
// [ 'dog', 'cat' ]

相反的如果使用延展運算子,則可以先複製一個新的陣列,而不會修改原本的陣列

const animal = ["cat", "dog"]
const [last] = [...animal].reverse();

console.log(last);
// dog
console.log(animal);
// [ 'cat', 'dog' ]


結語

接續前一篇介紹了一下ES6的語法,這篇則是介紹ES6中的解構、物件強化、延展運算子的使用方式,其中解構、延展運算子在React實作中,是相當常使用的功能。

如果有任何建議與疑問也歡迎留言!

如果喜歡此系列文章,請不吝於按下喜歡及分享,讓更多人看到唷~


引用

https://www.w3schools.com/js/js_es6.asp

https://www.javascripttutorial.net/es6/

https://developer.mozilla.org/en-US/docs/Web/JavaScript


備註

目前文章已移至 JavaScript ES6 – React 白話文運動 01

未來文章一併更新於此網站 Hogan.B Lab

並且包含多語系 繁體中文英文日文簡體中文

觀看分類:React 白話文運動其他系列


其他文章

React 白話文運動 01-JavaScript ES6

為何大公司都使用Nx ? Monorepo工具 5 分鐘快速建置

你真的懂Monorepo? 5 分鐘帶你認識前端大型架構

Zustand 是什麼? React 前端狀態管理

 

希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近公司發放了2025年行事曆(以下為示意圖非實際行事曆): 看起來很正常的行事曆,但問題就出現在了週別計算。 歸納後某公司的規則如下: a. 1月1日那一週如果屬於今年的日數大於等於4日,則為第一週W1。 b. 1月1日那一週如果屬於今年的日數小於4日,則為去年最後一週W52或W5
Thumbnail
工作上固定頻率會收到User提供的設定需求資訊,檔案大多為excel的格式.xlsx或.xls,需要擷取內容的參數資訊,轉換撰寫sql語法寫入資料庫進行操作。 既然格式都是固定的,何不動手寫個小工具,一鍵完成轉換呢?
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近公司發放了2025年行事曆(以下為示意圖非實際行事曆): 看起來很正常的行事曆,但問題就出現在了週別計算。 歸納後某公司的規則如下: a. 1月1日那一週如果屬於今年的日數大於等於4日,則為第一週W1。 b. 1月1日那一週如果屬於今年的日數小於4日,則為去年最後一週W52或W5
Thumbnail
工作上固定頻率會收到User提供的設定需求資訊,檔案大多為excel的格式.xlsx或.xls,需要擷取內容的參數資訊,轉換撰寫sql語法寫入資料庫進行操作。 既然格式都是固定的,何不動手寫個小工具,一鍵完成轉換呢?
Thumbnail
套件(Package)是將程式或程式庫進行組織、分發和共享的一種方式。在軟體開發中,套件通常包含了相關的程式碼、資源文件和元數據,並提供了統一的名稱空間和版本管理。
Thumbnail
當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
Thumbnail
本章節旨在介紹JavaScript中的物件導向編程。內容包括類別(Class)的定義和使用,建構子的作用,以及公開,私有,受保護(Protected)等不同訪問修飾符的概念。此外,還涵蓋了繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型、反射等物件導向的主要觀念。