Javascript中的解構賦值語法詳解

前言

首先在 ES6中引入的“解構賦值語法”允許把數組和對象中的值插入到不同的變量中。雖然看上去可能很難,但實際上很容易學習和使用。

解構賦值語法是一種 JS表達式。ES6 允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。通過解構賦值, 可以將屬性/值從對象/數組中取出,賦值給其他變量。

在ES6解構賦值出現之前,我們需要為變量賦值的時候,隻能直接指定值。

比如:

let a = 1;
let b = 2;
let c = 3;
let d = 4;
let e = 5;

數組解構非常簡單。你所要做的就是為數組中的每個值聲明一個變量。你可以定義更少的變量,而不是數組中的索引(即,如果你隻想解處理前幾個值),請跳過某些索引或甚至使用 REST 模式將所有剩餘的值放到新數組中。

const nums = [ 3, 6, 9, 12, 15 ];
const [
 k,    // k = 3
 l,    // l = 6
 ,    // Skip a value (12)
 ...n   // n = [12, 15]
] = nums;

對象解構

對象解構與數組解構非常相似,主要區別是可以按名稱引用對象中的每個key,從而創建一個有相同名稱的變量。此外還可以將鍵解構為新的變量名,隻解構所需的 key,然後用 rest 模式將剩餘的 key 解構為新對象。

const obj = { a: 1, b: 2, c: 3, d: 4 };
const {
 a,       // a = 1
 c: d,      // d = 3
 ...rest     // rest = { b: 2, d: 4 }
} = obj;

嵌套解構

嵌套對象和數組可以通過相同的規則來進行解構。區別在於可以將嵌套 key 或值直接解構為變量,而不必將父對象存儲在變量本身中。

const nested = { a: { b: 1, c: 2 }, d: [1, 2]};
const {
 a: {
  b: f,     // f = 1
  ...g     // g = { c: 2 }
 },
 ...h      // h = { d: [1, 2]}
} = nested;

高級解構

由於數組的行為與對象相似,所以可以通過使用索引作為對象解構分配中的 key,用解構分配語法從數組中獲取特定值。用這種方法還可以得到數組的其他屬性(例如數組的 length)。最後,如果解構後的值是 undefined,則還可以為解構過程中的變量定義默認值。

const arr = [ 5, 'b', 4, 'd', 'e', 'f', 2 ];
const {
 6: x,      // x = 2
 0: y,      // y = 5
 2: z,      // z = 4
 length: count, // count = 7
 name = 'array', // name = 'array' (not present in arr)
 ...restData   // restData = { '1': 'b', '3': 'd', '4': 'e', '5': 'f' }
} = arr;

總結

到此這篇關於Javascript中解構賦值語法的文章就介紹到這瞭,更多相關JS解構賦值語法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!