必須要懂的JS之(rest引數與spread語法)
rest引數與spread語法
rest引數指的是這樣的結構:
function sumAll(...args) { // 陣列名為 args
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
alert( sumAll(1) ); // 1
alert( sumAll(1, 2) ); // 3
alert( sumAll(1, 2, 3) ); // 6
以上的…args傳參的方式就是rest引數,這種形式的傳參可以解決不固定引數的情況,而且值得注意的是,傳入的不固定數量的引數是可以進行迴圈解構的!
在沒有rest之前我們可以利用arguments來獲取傳入的引數,但是arguments並非是一個陣列,所以關於陣列的方法比如map就不適用,注意的一點就是rest引數需要放在末尾。
spread語法:
let arr = [3, 5, 1];
alert( Math.max(...arr) ); // 5(spread 語法把陣列轉換為引數列表)
以上結構屬於spread語法,展示了一個返回陣列中最大值的操作,…arr將陣列中的值進行結構並匯入Math.max方法中。
這種語法需要注意的點有以下幾種;
一、
let arr1 = [1, -2, 3, 4];
let arr2 = [8, 3, -8, 1];
alert( Math.max(...arr1, ...arr2) ); // 8
我們可以對多個陣列進行解構。
二、
let arr = [3, 5, 1];
let arr2 = [8, 9, 15];
let merged = [0, ...arr, 2, ...arr2];
alert(merged); // 0,3,5,1,2,8,9,15(0,然後是 arr,然後是 2,然後是 arr2)
可以對陣列進行合併。
三、
let str = "Hello";
alert( [...str] ); // H,e,l,l,
對於字串依然可以使用。
四、
let arr = [1, 2, 3];
let arrCopy = [...arr]; // 將陣列 spread 到引數列表中
// 然後將結果放到一個新陣列
// 兩個陣列中的內容相同嗎?
alert(JSON.stringify(arr) === JSON.stringify(arrCopy)); // true
// 兩個陣列相等嗎?
alert(arr === arrCopy); // false(它們的引用是不同的)
// 修改我們初始的陣列不會修改副本:
arr.push(4);
alert(arr); // 1, 2, 3, 4
alert(arrCopy); // 1, 2, 3
對陣列進行深拷貝
相關文章
- 你必須收藏的 ES6 語法密糖 – Spread Operator 技巧
- 你必須收藏的 ES6 語法密糖 - Spread Operator 技巧
- 【面試篇】寒冬求職季之你必須要懂的原生JS(上)面試求職JS
- 【面試篇】寒冬求職季之你必須要懂的原生JS(中)面試求職JS
- 成為Python大牛必須要掌握的高階語法——yieldPython
- go中Slice的一些使用方式與必須要懂的使用事項Go
- An easy guide to object rest/spreadGUIIDEObjectREST
- 必須懂的mysql知識MySql
- 核心必須懂(五): per-CPU變數變數
- C語言必須要記住的經典程式C語言
- nginx url必須攜帶引數判定Nginx
- 你必須懂的前端效能優化前端優化
- [JAVA] CLASSPATH環境變數必須要配置嗎Java變數
- 必須要掌握的重要目錄
- 做一個好前端必須要知道的事——JS語言前端JS
- 引數傳遞方式必須是const引用傳遞
- [譯]使用 JavaScript 物件 Rest 和 Spread 的7個技巧JavaScript物件REST
- 【譯】ES2018 新特性:Rest/Spread 特性REST
- 如何透過功率電感引數選型,這六個引數必須注意
- JavaScript必須要掌握的知識-作用域JavaScript
- 核心必須懂(六): 使用kgdb除錯核心除錯
- 核心必須懂(四): 撰寫核心驅動
- 核心必須懂(二): 檔案系統初探
- 【ES6基礎】展開語法(Spread syntax)
- 必須要會的 50 個 React 面試題React面試題
- 學習web前端,必須要掌握的CSS原理Web前端CSS
- shell程式設計必須要掌握的命令-xargs程式設計
- 前端必須懂的計算機網路知識—(TCP)前端計算機網路TCP
- 前端必須懂的計算機網路知識—(HTTP)前端計算機網路HTTP
- JSON 屬性必須用雙引號JSON
- 人工智慧要普及,這一步必須要先行!人工智慧
- 必須要會回答的Java面試題(字串篇)Java面試題字串
- 進大廠必須要會的單元測試
- 核心必須懂(一):用系統呼叫列印Hello,world!
- C++ 預設引數與引用傳遞:語法、用法及示例C++
- 前端進階之 JS 抽象語法樹前端JS抽象語法樹
- 檔案管理,你必須要知道的三個要點
- JavaScript必須要掌握的知識-作用域編寫提升JavaScript