91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ES6基礎之展開語法(Spread syntax)

發布時間:2020-10-01 09:05:58 來源:腳本之家 閱讀:141 作者:前端達人 欄目:web開發

展開語法用"..."進行表示,展開語法將可迭代的對象拆分成獨立的值(語法層面展開)。擴展語法通常用于將可迭代的對象的值傳遞到函數的參數中。今天小編將從以下方面進行介紹:

  • 函數傳參中的應用
  • 數組的相關應用
  • 剩余參數的應用
  • 函數傳參中的應用

ES6之前,如果我們希望將數組作為參數分別傳遞給函數中的參數,我們可以使用Function的apply()方法。如下段代碼所示:

function myFunction(a, b) {
 return a + b;
}
var data = [1, 4];
var result = myFunction.apply(null, data);
console.log(result); //Output "5”

從上述代碼,apply方法接受一個數組,將它們分拆成單獨參數傳遞函數進行調用。

ES6的展開語法能讓我們以更簡潔的方式進行調用,如下段代碼所示:

function myFunction(a, b) {
  return a + b; 
}
let data = [1, 4];
let result = myFunction(...data);
console.log(result); //Output "5”

代碼運行期間,JavaScript解釋器調用myFunction之前,將會用1,4表達式替換...運算符:

let result = myFunction(...data);

上述代碼將會進行如下轉換:

let result = myFunction(1,4);

替換后,函數中的代碼將會繼續執行。

數組的相關應用

數組的合并

展開語法可將數組添加到另外一個數組中,成為其中的一部分。

let array1 = [2,3,4];
let array2 = [1, ...array1, 5, 6, 7];
console.log(array2); //Output "1, 2, 3, 4, 5, 6, 7”

代碼運行期間,如下代碼:

let array2 = [1, ...array1, 5, 6, 7];

上述代碼將會替換成如下代碼:

let array2 = [1, 2, 3, 4, 5, 6, 7];

在push方法中的運用

有時候,我們需要將一個數組的內容追加到另一個數組中,ES6之前我們可以這么做,如下段代碼所示:

var array1 = [2,3,4];
var array2 = [1];
Array.prototype.push.apply(array2, array1);
console.log(array2); //Output "1, 2, 3, 4”

ES6的展開語法能以更簡潔的形式實現,如下段代碼所示:

let array1 = [2,3,4];
let array2=[1];
array2.push(...array1);
console.log(array2); //Output "1, 2, 3, 4”

代碼運行期間,如下代碼:

array2.push(...array1);

上述代碼將會替換成如下代碼:

array2.push(2, 3, 4);

傳遞多個數組參數

我們可以使用展開語法傳遞多個數組進行參數傳遞,如下段代碼所示:

let array1 = [1];
let array2 = [2];
let array3 = [...array1, ...array2, ...[3, 4]];//multi arrayspread
let array4 = [5];
function myFunction(a, b, c, d, e) {
 return a+b+c+d+e;
}
let result = myFunction(...array3, ...array4); //multi array spread
console.log(result); //Output "15”

剩余參數的應用

我們知道JS函數內部有個arguments對象,可以拿到全部實參。現在ES6給我們帶來了一個新的對象,可以拿到除開始參數外的參數,即剩余參數,我們可以使用展開語法...進行獲取。

ES6之前,我們可以這樣獲取剩余參數,如下段代碼所示:

function myFunction(a, b) {
  const args = Array.prototype.slice.call(arguments, myFunction.length);
  console.log(args);
}
myFunction(1, 2, 3, 4, 5); //Output "3, 4, 5”

ES6中,上述代碼我們可以這樣改下,如下段代碼所示:

function myFunction(a, b, ...args) {
  console.log(args); //Output "3, 4, 5"
}
myFunction(1, 2, 3, 4, 5);

是不是很簡單,有個我們需要注意的事,一旦函數中的參數第一個參數使用剩余參數,就不能聲明第二個非剩余參數,否則將會拋出錯誤。例如下段代碼所示:

function fn(...rest,foo) {} 
//Output "SyntaxError: Rest parameter must be last formal parameter"

小節

今天的內容就到這里,展開語法是不是特別的酷啊,在日后的開發中,我們盡量使用新的語法糖替代舊的寫法。讓我們代碼看起來更加干凈、整潔、易懂。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云南省| 金塔县| 天台县| 云霄县| 景洪市| 凌云县| 日照市| 丘北县| 平陆县| 丰县| 当阳市| 弥渡县| 湄潭县| 武城县| 松江区| 乾安县| 滦南县| 思南县| 五河县| 西贡区| 湘乡市| 榆社县| 登封市| 千阳县| 义马市| 留坝县| 志丹县| 宁国市| 舞钢市| 会泽县| 宁阳县| 岳阳县| 陕西省| 靖边县| 通州市| 定远县| 阜城县| 三江| 高阳县| 东至县| 临漳县|