JS 擴展運算符詳解

一、基本概念

JavaScript 的擴展運算符是指三個點(…)。它可以將一個數組轉為用逗號分隔的參數序列,或將一個對象轉為由 (key,value) 組成的序列。

擴展運算符出現的初衷是為了取代 ES5 中的 apply 方法。

下面是一個簡單的示例:

const arr = [1, 2, 3];
console.log(...arr); // 1 2 3

擴展運算符將數組 [1, 2, 3] 轉換成了參數 1,2,3。這個特性使得函數的調用非常方便。

二、數組操作

1. 數組合併

擴展運算符可以將兩個或多個數組合併成一個數組。示例如下:

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const newArr = [...arr1, ...arr2];
console.log(newArr); // [1, 2, 3, 4, 5, 6]

2. 數組拷貝

擴展運算符還可以拷貝數組,而不是引用。下面的示例可以看出,在拷貝過程中,修改新數組並不會影響原數組。

const arr1 = [1, 2, 3];
const arr2 = [...arr1];
arr2[0] = 0;
console.log(arr1); // [1, 2, 3]
console.log(arr2); // [0, 2, 3]

三、函數調用

擴展運算符可以將數組轉換為一個函數的參數序列。這一特性對於需要多個參數的函數非常有用。

下面的示例演示了如何使用擴展運算符調用一個函數:

function myFunction(x, y, z) {
  console.log(x, y, z);
}
const arr = [1, 2, 3];
myFunction(...arr); // 1 2 3

四、對象操作

1. 對象合併

擴展運算符可以將多個對象合併成一個對象。如果有重複的鍵名,後面的屬性會覆蓋前面的屬性。

const obj1 = { foo: 1, bar: 2 };
const obj2 = { baz: 3, bar: 4 };
const newObj = {...obj1, ...obj2};
console.log(newObj); // { foo: 1, bar: 4, baz: 3 }

2. 對象新增屬性

擴展運算符還可以為一個對象添加新的屬性,同時不會影響原對象。

const obj1 = { foo: 1, bar: 2 };
const newObj = { ...obj1, baz: 3 };
console.log(obj1); // { foo: 1, bar: 2}
console.log(newObj); // { foo: 1, bar: 2, baz: 3 }

五、其他用法

1. 字元串轉數組

擴展運算符可以將一個字元串轉換成字元數組。

const str = 'hello';
const arr = [...str];
console.log(arr); // ['h', 'e', 'l', 'l', 'o']

2. 數組轉對象

擴展運算符可以將一個數組轉換成對象。但是需要注意的是,數組中的每一項必須是由鍵名和鍵值構成的數組。

const arr = [['foo', 1], ['bar', 2]];
const obj = {...arr};
console.log(obj); // {foo: 1, bar: 2};

六、總結

擴展運算符是 JavaScript 中非常強大的功能之一,可以大大簡化代碼的編寫,提高程序的效率。不僅可以用於數組和對象操作,還可以將字元串轉換為字元數組,將數組轉換為對象等。

原創文章,作者:VTYVT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334028.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VTYVT的頭像VTYVT
上一篇 2025-02-05 13:04
下一篇 2025-02-05 13:05

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 條件運算符(?:)是什麼意思?

    條件運算符(?:)是JavaScript中的一種特殊的運算符,也是許多編程語言中相似語法的一部分。它可以允許我們在一個簡單、一行的語句中完成條件判斷和賦值操作,非常方便。 1.語法…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python中賦值運算符和相等運算符解析

    Python是一種高級編程語言,它通常被用於開發 Web 應用程序、人工智慧、數據分析和科學計算。在Python中,賦值運算符和相等運算符是非常常見和基本的運算符,它們也是進行編程…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Python中的算數運算符優先順序問題

    本文將從多個方面詳細闡述Python中算數運算符的優先順序問題,並給出對應代碼示例。算數運算符的優先順序指的是在混合運算時,Python自動根據一定的優先順序順序決定哪一個運算符先進行。…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27

發表回復

登錄後才能評論