必須要懂的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
對陣列進行深拷貝
相關文章
- 理解spread運算子與rest引數REST
- 【面試篇】寒冬求職季之你必須要懂的原生JS(上)面試求職JS
- 【面試篇】寒冬求職季之你必須要懂的原生JS(中)面試求職JS
- 你必須收藏的 ES6 語法密糖 - Spread Operator 技巧
- 你必須收藏的 ES6 語法密糖 – Spread Operator 技巧
- 成為Python大牛必須要掌握的高階語法——yieldPython
- go中Slice的一些使用方式與必須要懂的使用事項Go
- 核心必須懂(五): per-CPU變數變數
- 必須懂的mysql知識MySql
- Node.js開發者必須瞭解的4個JS要點Node.js
- C語言必須要記住的經典程式C語言
- nginx url必須攜帶引數判定Nginx
- 精選 | 你必須懂的R語言最新資料包R語言
- JSON 屬性必須用雙引號JSON
- 你必須懂的前端效能優化前端優化
- Retrofit 動態引數(非固定引數、非必須引數)(Get、Post請求)
- [JAVA] CLASSPATH環境變數必須要配置嗎Java變數
- An easy guide to object rest/spreadGUIIDEObjectREST
- JavaScript JSON——“語法、解析與序列化”的注意要點JavaScriptJSON
- 一看就懂的JS抽象語法樹JS抽象語法樹
- git 必須要熟練掌握的命令Git
- 張小龍演講PPT:APP產品經理必須要懂的30條原則APP
- 必須要會的 50 個 React 面試題React面試題
- JavaScript必須要掌握的知識-作用域JavaScript
- 核心必須懂(四): 撰寫核心驅動
- 核心必須懂(六): 使用kgdb除錯核心除錯
- 核心必須懂(二): 檔案系統初探
- 做一個好前端必須要知道的事——JS語言前端JS
- 引數傳遞方式必須是const引用傳遞
- Oracle建完庫後必須先設好的三個引數Oracle
- JS語法: 由++[[]][+[]]+[+[]] = 10 ?引發的問題JS
- JSON格式資料屬性必須用雙引號包裹JSON
- 必須要會回答的Java面試題(字串篇)Java面試題字串
- shell程式設計必須要掌握的命令-xargs程式設計
- 學習web前端,必須要掌握的CSS原理Web前端CSS
- 今後工作必須要調查清楚的事情
- 聲音很差,必須要處理下了
- 前端必須懂的計算機網路知識—(HTTP)前端計算機網路HTTP