<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【ES6 教程】第一章 新的ES6語(yǔ)法05—REST 參數(shù)以及如何有效地使用它們

          共 2538字,需瀏覽 6分鐘

           ·

          2022-03-07 23:14

          英文 | https://www.javascripttutorial.net

          翻譯 | 楊小愛


          在本節(jié)教程中,我們將學(xué)習(xí)如何使用 JavaScript 剩余參數(shù)來(lái)收集參數(shù)并將它們?nèi)糠湃胍粋€(gè)數(shù)組中。

          JavaScript REST 參數(shù)介紹

          ES6 提供了一種名為 rest 參數(shù)的新參數(shù),其前綴為三個(gè)點(diǎn) (...)。剩余參數(shù)允許我們將不定數(shù)量的參數(shù)表示為數(shù)組。請(qǐng)參閱以下語(yǔ)法:

          function fn(a,b,...args) {   //...}

          最后一個(gè)參數(shù) (args) 以三個(gè)點(diǎn) (...) 為前綴。它被稱為rest參數(shù)(...args)。

          我們傳遞給函數(shù)的所有參數(shù)都將映射到參數(shù)列表。在上面的語(yǔ)法中,第一個(gè)參數(shù)映射到 a,第二個(gè)映射到 b,第三個(gè)、第四個(gè)等將作為數(shù)組存儲(chǔ)在其余參數(shù) args 中。 

          例如:

          fn(123"A""B""C");

          args 數(shù)組存儲(chǔ)以下值:

          [3,'A','B','C']

          如果只傳遞前兩個(gè)參數(shù),則其余參數(shù)將是一個(gè)空數(shù)組:

          fn(1,2);

          args將是:

          []

          請(qǐng)注意,其余參數(shù)必須出現(xiàn)在參數(shù)列表的末尾。以下代碼將導(dǎo)致錯(cuò)誤:

          function fn(a,...rest, b) { // error}

          錯(cuò)誤:

          SyntaxError: Rest parameter must be last formal parameter

          更多 JavaScript 剩余參數(shù)示例

          請(qǐng)參見以下示例:

          function sum(...args) {    let total = 0;    for (const a of args) {        total += a;    }    return total;}
          sum(1, 2, 3);

          腳本的輸出是:

          6

          在此示例中,args在一個(gè)數(shù)組中。因此,我們可以使用 for..of 循環(huán)遍歷其元素并將它們相加。

          假設(shè) sum() 函數(shù)的調(diào)用者可以傳遞具有各種數(shù)據(jù)類型(例如數(shù)字、字符串和布爾值)的參數(shù),并且我們只想計(jì)算數(shù)字的總數(shù):

          function sum(...args) {  return args    .filter(function (e) {      return typeof e === 'number';    })    .reduce(function (prev, curr) {      return prev + curr;    });}

          以下腳本使用新的 sum() 函數(shù)僅對(duì)數(shù)字參數(shù)求和:

          let result = sum(10,'Hi',null,undefined,20); console.log(result);

          輸出:

          30

          請(qǐng)注意,如果沒有其余參數(shù),則必須使用函數(shù)的 arguments 對(duì)象。

          但是,arguments 對(duì)象本身不是 Array 類型的實(shí)例。因此,我們不能直接使用 filter() 方法。在 ES5 中,我們必須使用 Array.prototype.filter.call() 如下:

          function sum() {  return Array.prototype.filter    .call(arguments, function (e) {      return typeof e === 'number';    })    .reduce(function (prev, curr) {      return prev + curr;    });}

          如上所見,rest 參數(shù)使代碼更加優(yōu)雅。假設(shè)我們需要根據(jù)特定類型(例如數(shù)字、字符串、布爾值和空值)過濾參數(shù)。以下功能可幫助我們做到這一點(diǎn):

          function filterBy(type, ...args) {  return args.filter(function (e) {    return typeof e === type;  });}

          JavaScript 剩余參數(shù)和箭頭函數(shù)

          箭頭函數(shù)沒有參數(shù)對(duì)象。因此,如果要向箭頭函數(shù)傳遞一些參數(shù),則必須使用其余參數(shù)。請(qǐng)參見以下示例:

          const combine = (...args) => {  return args.reduce(function (prev, curr) {    return prev + ' ' + curr;  });};
          let message = combine('JavaScript', 'Rest', 'Parameters'); // =>console.log(message); // JavaScript Rest Parameters

          輸出:

          JavaScript Rest Parameters

          combine() 是一個(gè)箭頭函數(shù),它接受不定數(shù)量的參數(shù)并將這些參數(shù)連接起來(lái)。

          動(dòng)態(tài)函數(shù)中的 JavaScript 剩余參數(shù)

          JavaScript 允許我們通過 Function 構(gòu)造函數(shù)創(chuàng)建動(dòng)態(tài)函數(shù)。并且可以在動(dòng)態(tài)函數(shù)中使用 rest 參數(shù)。這是一個(gè)例子:

          var showNumbers = new Function('...numbers', 'console.log(numbers)');showNumbers(1, 2, 3);

          輸出:

          [ 1, 2, 3 ]

          總結(jié)

          在本節(jié)教程中,我們學(xué)習(xí)了如何使用 JavaScript 剩余參數(shù)將不定數(shù)量的參數(shù)表示為數(shù)組。

          推薦閱讀

          【ES6 教程】第一章 新的ES6語(yǔ)法01—let:使用let關(guān)鍵字聲明塊范圍的變量

          【ES6 教程】第一章 新的ES6語(yǔ)法02—var 和 let 的區(qū)別

          【ES6 教程】第一章 新的ES6語(yǔ)法03—使用const 關(guān)鍵字定義常量

          【ES6 教程】第一章 新的ES6語(yǔ)法04—如何設(shè)置函數(shù)參數(shù)的默認(rèn)值


          學(xué)習(xí)更多技能

          請(qǐng)點(diǎn)擊下方公眾號(hào)

          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人欧美精品 | 国产婷婷精品视频 | 成人无码一区二区含羞草 | 91网在线| 超碰人妻在线 |