1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【ES6 教程】第一章 新的ES6語法06—JavaScript 擴展運算符

        共 2710字,需瀏覽 6分鐘

         ·

        2022-03-07 23:13

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

        翻譯 | 楊小愛


        在本教程中,我們將了解學習 JavaScript 擴展運算符,該運算符擴展可迭代對象的元素。
        JavaScript 擴展運算符簡介
        ES6 提供了一個名為擴展運算符的新運算符,它由三個點 (...) 組成。擴展運算符允許我們擴展可迭代對象的元素,例如數(shù)組、映射或集合。例如:
        const odd = [1,3,5];const combined = [2,4,6, ...odd];console.log(combined);

        輸出:

        [ 2, 4, 6, 1, 3, 5 ]

        在此示例中,奇數(shù)數(shù)組前面的三個點 (...) 是展開運算符。擴展運算符 (...) 解包奇數(shù)數(shù)組的元素。

        請注意,ES6 還具有三個點 (...),它是一個將函數(shù)的所有剩余參數(shù)收集到一個數(shù)組中的剩余參數(shù)。

        function f(a, b, ...args) {  console.log(args);}
        f(1, 2, 3, 4, 5);

        輸出:

        [ 3, 4, 5 ]

        在此示例中,其余參數(shù) (...) 將參數(shù) 3、4 和 5 收集到數(shù)組 args 中。所以三個點 (...) 代表擴展運算符和其余參數(shù)。

        以下是主要區(qū)別:

        • 擴展運算符 (...) 解包可迭代對象的元素。

        • 其余參數(shù) (...) 將元素打包到一個數(shù)組中。

        其余參數(shù)必須是函數(shù)的最后一個參數(shù)。但是,展開運算符可以在任何地方:

        const odd = [1,3,5];const combined = [...odd, 2,4,6];console.log(combined);

        輸出:

        [ 1, 3, 5, 2, 4, 6 ]

        要么

        const odd = [1,3,5];const combined = [2,...odd, 4,6];console.log(combined);

        輸出:

        [ 2, 1, 3, 5, 4, 6 ]

        請注意,ES2018 將擴展運算符擴展為對象,這稱為對象擴展。

        讓我們看一些可以使用擴展運算符的場景。

        JavaScript 擴展運算符和 apply() 方法

        請參閱以下 compare() 函數(shù)比較兩個數(shù)字:

        function compare(a, b) {    return a - b;}

        在 ES5 中,要將包含兩個數(shù)字的數(shù)組傳遞給 compare() 函數(shù),我們經(jīng)常使用 apply() 方法,如下所示:

        let result = compare.apply(null, [1, 2]);console.log(result); // -1

        但是,通過使用擴展運算符,我們可以將包含兩個數(shù)字的數(shù)組傳遞給 compare() 函數(shù):

        let result = compare(...[1, 2]);console.log(result); // -1

        擴展運算符將數(shù)組的元素展開,因此,在這種情況下 a 為 1,b 為 2。

        使用 Array 的 push() 方法示例的更好方法

        有時,一個函數(shù)可能接受不定數(shù)量的參數(shù)。從數(shù)組中填充參數(shù)并不方便。

        例如,數(shù)組對象的 push() 方法允許我們向數(shù)組添加一個或多個元素。如果要將數(shù)組傳遞給 push() 方法,則需要使用 apply() 方法,如下所示:

        let rivers = ['Nile', 'Ganges', 'Yangte'];let moreRivers = ['Danube', 'Amazon'];
        [].push.apply(rivers, moreRivers);console.log(rivers);

        這個解決方案看起來很冗長。

        以下示例使用擴展運算符來提高代碼的可讀性:

        rivers.push(...moreRivers);

        如上所見,使用擴展運算符要干凈得多。

        JavaScript 擴展運算符和數(shù)組操作

        1) 構(gòu)造數(shù)組字面量

        擴展運算符允許我們在使用文字形式構(gòu)造數(shù)組時將另一個數(shù)組插入到初始化的數(shù)組中。請參見以下示例:

        let initialChars = ['A', 'B'];let chars = [...initialChars, 'C', 'D'];console.log(chars); // ["A", "B", "C", "D"]

        2) 連接數(shù)組

        此外,我們可以使用擴展運算符連接兩個或多個數(shù)組:

        let numbers = [1, 2];let moreNumbers = [3, 4];let allNumbers = [...numbers, ...moreNumbers];console.log(allNumbers); // [1, 2, 3, 4]

        3) 復制數(shù)組

        此外,我們可以使用擴展運算符復制數(shù)組實例:

        let scores = [80, 70, 90];let copiedScores = [...scores];console.log(copiedScores); // [80, 70, 90]

        請注意,擴展運算符僅將數(shù)組本身復制到新數(shù)組,而不是元素。這意味著副本是淺的,而不是深的。

        JavaScript 擴展運算符和字符串

        考慮以下示例:

        let chars = ['A', ...'BC', 'D'];console.log(chars); // ["A", "B", "C", "D"]

        在此示例中,我們從單個字符串構(gòu)造了 chars 數(shù)組。當我們將擴展運算符應用于“BC”字符串時,它將字符串“BC”的每個單獨的字符展開為單獨的字符。

        總結(jié)

        • 擴展運算符由三個點 (...) 表示。

        • 擴展運算符將可迭代對象(如數(shù)組、集合和映射)的元素解包到列表中。

        • 其余參數(shù)也用三個點 (…) 表示。但是,它將函數(shù)的剩余參數(shù)打包到一個數(shù)組中。

        • 擴展運算符可用于克隆可迭代對象或?qū)⒖傻鷮ο蠛喜橐粋€。

        今天的內(nèi)容,你學會了嗎?

        推薦閱讀

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

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

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

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



        學習更多技能

        請點擊下方公眾號

        瀏覽 27
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            丁香六月婷婷 | 加勒比综合| 韩国精品 A片 | 精品婷婷一区二区三区四区五区 | 乱伦视频综合网 | 国产又粗又长又大又硬又爽 | 波多野结衣视频在线看 | 日本激情动态图 | 色综合五月婷婷 | 大尺度最开放的视频聊天软件 |