帶你來了解JavaScript解構賦值
本篇文章為大家帶來了關於javascript的相關知識,其中主要介紹了關於解構賦值的相關問題,包括了數組解構、對象結構以及解構的用途等等,希望對大家有幫助。
相關推薦:javascript學習教學
#概念
ES6提供了更簡潔的賦值模式,從數組和物件中提取值,這被稱為解構
範例:
[a, b] = [50, 100]; console.log(a); // expected output: 50 console.log(b); // expected output: 100 [a, b, ...rest] = [10, 20, 30, 40, 50]; console.log(rest); // expected output: [30, 40, 50]
數組解構
數組解構是非常簡單簡潔的,在賦值表達式的左側使用數組字面量,數組字面量中的每個變數名稱映射為解構數組的相同索引項
這是什麼意思呢,就是如下面這個示例一樣,左邊數組中的項分別得到了右側解構數組對應索引的值
let [a, b, c] = [1, 2, 3]; // a = 1 // b = 2 // c = 3
宣告分別賦值
你可以透過變數宣告分別解構賦值
範例:宣告變量,分別賦值
// 声明变量 let a, b; // 然后分别赋值 [a, b] = [1, 2]; console.log(a); // 1 console.log(b); // 2
解構預設值
#如果解構取出的值是undefined
,可以設定預設值:
let a, b; // 设置默认值 [a = 5, b = 7] = [1]; console.log(a); // 1 console.log(b); // 7
在上面的範例中,我們給a和b都設定了預設值
這種情況下,如果a或b的值是undefined
,它將把設定的預設值賦給對應變數(5賦給a,7賦給b)
交換變數值
以往我們進行兩個變數的交換,都是使用
//交换abc = a;a = b;b = c;
或異或的方法
#然而在解構賦值中,我們可以在一個解構表達式中交換兩個變數值
let a = 1;let b = 3;//交换a和b的值[a, b] = [b, a];console.log(a); // 3console.log(b); // 1
#解構函數傳回的陣列
我們可以直接解構一個傳回值為陣列的函數
function c() { return [10, 20];}let a, b;[a, b] = c();console.log(a); // 10console.log(b); // 20
在上面的範例中,**c()**的傳回值[ 10,20]可以在單獨的同一行程式碼中使用解構
忽略回傳值(或跳過某一項)
你可以有選擇性的跳過一些不想得到的回傳值
function c() { return [1, 2, 3];}let [a, , b] = c();console.log(a); // 1console.log(b); // 3
賦值數組剩餘值給一個變數
當你使用數組解構時,你可以把賦值數組剩餘的部分全部賦給一個變數
let [a, ...b] = [1, 2, 3];console.log(a); // 1console.log(b); // [2, 3]
這樣的話b也會變成一個陣列了,陣列中的項目是剩餘的所有項目
注意:
這裡要小心結尾是不能再寫逗號的,如果多了一個逗號將會報錯
let [a, ...b,] = [1, 2, 3];// SyntaxError: rest element may not have a trailing comma
#嵌套數組解構
像物件一樣,數組也可以進行嵌套解構
範例:
const color = ['#FF00FF', [255, 0, 255], 'rgb(255, 0, 255)']; // Use nested destructuring to assign red, green and blue // 使用嵌套解构赋值 red, green, blue const [hex, [red, green, blue]] = color; console.log(hex, red, green, blue); // #FF00FF 255 0 255
字串解構
#在陣列解構中,解構的目標若為可遍歷對象,皆可進行解構賦值,可遍歷物件即實作Iterator介面的資料
let [a, b, c, d, e] = 'hello';/* a = 'h' b = 'e' c = 'l' d = 'l' e = 'o' */
物件解構
基礎物件解構
let x = { y: 22, z: true }; let { y, z } = x; // let {y:y,z:z} = x;的简写 console.log(y); // 22 console.log(z); // true
賦值給新變數名稱
當使用物件解構時可以改變變數的名稱
let o = { p: 22, q: true }; let { p: foo, q: bar } = o; console.log(foo); // 22 console.log(bar); // true
如上程式碼var {p: foo} = o
取得物件o 的屬性名p,然後賦值給一個名稱為foo 的變數
解構預設值
如果解構取出的物件值是undefined
,我們可以設定預設值
let { a = 10, b = 5 } = { a: 3 }; console.log(a); // 3 console.log(b); // 5
賦值給新物件名稱的同時提供預設值
前面提到我們賦值給新的物件名,這裡我們可以給這個新的物件名稱提供一個預設值,如果沒有解構它,就會自動使用預設值
let { a: aa = 10, b: bb = 5 } = { a: 3 }; console.log(aa); // 3 console.log(bb); // 5
#同時使用陣列和物件解構
在結構中陣列和物件可以一起使用
const props = [ { id: 1, name: 'Fizz' }, { id: 2, name: 'Buzz' }, { id: 3, name: 'FizzBuzz' }, ]; const [, , { name }] = props; console.log(name); // "FizzBuzz"
不完全解構
let obj = {p: [{y: 'world'}] }; let {p: [{ y }, x ] } = obj;//不解构x // x = undefined // y = 'world'
賦值剩餘值給一個物件
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}; // a = 10 // b = 20 // rest = {c: 30, d: 40}
嵌套物件解構(可忽略解構)
let obj = {p: ['hello', {y: 'world'}] }; let {p: [x, { y }] } = obj; // x = 'hello' // y = 'world' let obj = {p: ['hello', {y: 'world'}] }; let {p: [x, { }] } = obj;//忽略y // x = 'hello'
注意事項
小心地使用已宣告變數進行解構
##錯誤示範:
let x;{x} = {x: 1};
{x}理解為程式碼區塊,從而產生語法錯誤,我們要避免將大括號寫在行首,避免JavaScript將其解釋為程式碼區塊
正確寫法:
let x;({x} = {x: 1});
函數參數的解構賦值
函數的參數也可以使用解構賦值function add([x, y]) { return x + y;}add([1, 2]);
交換變數的值let x = 1;
let y = 2;
[x, y] = [y, x];
登入後複製
上面的程式碼交換x和y的值,這樣的寫法不僅簡潔而且易讀,語義清晰let x = 1; let y = 2; [x, y] = [y, x];
從函數傳回多個值
函數只能傳回一個值,如果要傳回多個值,我們只能將這些值放置數組或物件返回,當我們有了解構賦值後,從物件或數組裡取出這些值猶如探囊取物// 返回一个数组function example() { return [1, 2, 3];}let [a, b, c] = example(); // 返回一个对象 function example() { return { foo: 1, bar: 2 }; }let { foo, bar } = example();
提取JSON数据
解构赋值对于提取JSON对象中的数据,尤其有用
示例:
let jsonData = { id: 42, status: "OK", data: [867, 5309] }; let { id, status, data: number } = jsonData; console.log(id, status, number); // 42, "OK", [867, 5309]
使用上面的代码,我们就可以快速取出JSON数据中的值
相关推荐:javascript教程
以上是帶你來了解JavaScript解構賦值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
