亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

ES6:spread syntax —— JavaScript 將元素應(yīng)用于數(shù)組和函數(shù)的優(yōu)雅方法

xuweijian / 1304人閱讀

摘要:也就是說(shuō)如果一個(gè)數(shù)組中的元素發(fā)生改變,那么另一個(gè)數(shù)組中的元素也相應(yīng)地發(fā)生改變。依照函數(shù)定義,可以使用把數(shù)組元素應(yīng)用于函數(shù)。應(yīng)用于對(duì)象字面值這個(gè)特征是基于的附加特征。

編譯:胡子大哈

翻譯原文:http://huziketang.com/blog/posts/detail?postId=58f6b7b3a58c240ae35bb8e7
英文連接:ES6: The spread syntax — A concise way of applying elements to arrays and functions in JavaScript

轉(zhuǎn)載請(qǐng)注明出處,保留原文鏈接以及作者信息

上一篇文章中,我介紹了一些關(guān)于 ES6 解構(gòu)方法的新特性。

本文中我們一起來(lái)看一下另外一個(gè) JavaScript 新增語(yǔ)法 —— spread syntax(擴(kuò)展語(yǔ)法)。

spread syntax 實(shí)際上非常簡(jiǎn)單,假設(shè)你的可遍歷對(duì)象中有一些元素(如數(shù)組),你想把這些元素應(yīng)用于另一個(gè)新的數(shù)組或者一個(gè)函數(shù)調(diào)用。通常的做法,你會(huì)從索引開(kāi)始,利用循環(huán)訪問(wèn)每個(gè)元素。但是通過(guò) spread syntax 這個(gè)事情就變的很簡(jiǎn)單了,你可以使用三個(gè)點(diǎn)作為前綴,即 ... 應(yīng)用于可遍歷對(duì)象上,問(wèn)題就解決了。

為了更直觀,我們一起看幾個(gè)用例就明白了。

復(fù)制一個(gè)數(shù)組

假設(shè)有一個(gè)數(shù)組名字是 names。

    const names = ["Luke","Eva","Phil"];  

如何把 names 里面的元素復(fù)制到一個(gè)新數(shù)組中呢?

傳統(tǒng)的做法是用循環(huán)來(lái)實(shí)現(xiàn),但是使用 spread syntax,解決方法很簡(jiǎn)潔。

    const copiedList = [...names]  
    console.log(copiedList); // ["Luke","Eva","Phil"]  

可以看到比循環(huán)方法簡(jiǎn)單的多。

這里值得一提的是,這里復(fù)制的是引用。也就是說(shuō)如果一個(gè)數(shù)組中的元素發(fā)生改變,那么另一個(gè)數(shù)組中的元素也相應(yīng)地發(fā)生改變。

    var initialArray = [{name: "Luke"}];  
    var copiedArray = [...initialArray];
    
    initialArray[0]["name"] = "Mark";
    
    console.log(initialArray); //Array [{"name": "Mark"}]  
    console.log(copiedArray); //Array [{"name": "Mark"}]  
連接數(shù)組

spread syntax 另一個(gè)用法是連接數(shù)組,做法是把你想要擴(kuò)展的數(shù)組放到一起。如下:

    const concatinated = [...names, ...names];  
    console.log(concatinated); // ["Luke","Eva","Phil", "Luke","Eva","Phil"]  
把獨(dú)立變量擴(kuò)展到一起

除了把元素復(fù)制到一個(gè)新數(shù)組中,還可以把獨(dú)立變量一起擴(kuò)展到某數(shù)組中。下面舉個(gè)例子,把第一個(gè)元素和 names 數(shù)組擴(kuò)展到一起。

    const first = ["Emily", ...names];  
    console.log(first); // ["Emily","Luke","Eva","Phil"]  

還可以把獨(dú)立變量放到 names 的后面。

    const last = [...names, "Emily"];  
    console.log(last); // ["Luke","Eva","Phil", "Emily"]  
在函數(shù)調(diào)用中使用 spread syntax

你已經(jīng)掌握了如何在數(shù)組中運(yùn)用 spread syntax,現(xiàn)在我們來(lái)看一下如何在函數(shù)調(diào)用中使用。

假設(shè)我們有個(gè)簡(jiǎn)單函數(shù) —— printer —— 接受三個(gè)參數(shù),并且打印出來(lái)。

    const printer = (name1, name2, name3) => {  
        console.log(`Names: ${name1}, ${name2} and ${name3}`);
    };

依照 printer 函數(shù)定義,可以使用 spread syntax 把數(shù)組元素應(yīng)用于 printer 函數(shù)。

    printer(...names); // Names: Luke, Eva and Phil  

和數(shù)組的用法一樣,可以把獨(dú)立變量一起輸出。我們添加 ‘Emily’ 作為 printer 函數(shù)的第一個(gè)參數(shù),后面跟著 ...names

    printer("Emily", ...names); // Names: Emily, Luke and Eva

如果傳遞給函數(shù)過(guò)多的參數(shù),那么超過(guò)函數(shù)參數(shù)個(gè)數(shù)的元素將會(huì)被忽略掉。

Bonus:spread syntax 應(yīng)用于對(duì)象字面值!

這個(gè)特征是基于 ECMAScript 的附加特征。但是目前使用它需要 babel 插件,叫做: babel-plugin-transform-object-rest-spread。

通過(guò) spread syntax 這種變體,你可以把兩個(gè)對(duì)象擴(kuò)展到一起。假設(shè)你有兩個(gè)對(duì)象包含了個(gè)人信息 —— nameAndAgeabout。

    const nameAndAge = {  
      name: "Luke",
      age: 24,
    }
    
    const about = {  
      work: "Developer",
      hobby: "Skydiving",
    }

接下來(lái)用 spread syntax 把兩個(gè)對(duì)象合并到一起。

    const person = {  
      ...nameAndAge,
      ...about,
    }
    
    console.log(person);  
    //{
    //  "age": 24,
    //  "hobby": "Skydiving",
    //  "name": "Luke",
    //  "work": "Developer"
    //}

OK,這篇文章介紹了 spread syntax 的用法。后面我們會(huì)繼續(xù)介紹 ES6 新特性,敬請(qǐng)繼續(xù)關(guān)注!

我最近正在寫(xiě)一本《React.js 小書(shū)》,對(duì) React.js 感興趣的童鞋,歡迎指點(diǎn)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/82963.html

相關(guān)文章

  • ES6指北【5】——展開(kāi)語(yǔ)法(spread syntax)

    摘要:我們先來(lái)看一看的官方定義展開(kāi)語(yǔ)法可以在函數(shù)調(diào)用數(shù)組構(gòu)造時(shí)將數(shù)組表達(dá)式或者在語(yǔ)法層面展開(kāi)還可以在構(gòu)造字面量對(duì)象時(shí)將對(duì)象表達(dá)式按的方式展開(kāi)。 我們先來(lái)看一看MDN的官方定義 展開(kāi)語(yǔ)法(Spread syntax), 可以在函數(shù)調(diào)用/數(shù)組構(gòu)造時(shí), 將數(shù)組表達(dá)式或者string在語(yǔ)法層面展開(kāi);還可以在構(gòu)造字面量對(duì)象時(shí), 將對(duì)象表達(dá)式按key-value的方式展開(kāi)。(譯者注: 字面量一般指 [1...

    ZoomQuiet 評(píng)論0 收藏0
  • ES6 變量聲明與賦值:值傳遞、淺拷貝與深拷貝詳解

    摘要:變量聲明與賦值值傳遞淺拷貝與深拷貝詳解歸納于筆者的現(xiàn)代開(kāi)發(fā)語(yǔ)法基礎(chǔ)與實(shí)踐技巧系列文章。變量聲明在中,基本的變量聲明可以用方式允許省略,直接對(duì)未聲明的變量賦值。按值傳遞中函數(shù)的形參是被調(diào)用時(shí)所傳實(shí)參的副本。 ES6 變量聲明與賦值:值傳遞、淺拷貝與深拷貝詳解歸納于筆者的現(xiàn)代 JavaScript 開(kāi)發(fā):語(yǔ)法基礎(chǔ)與實(shí)踐技巧系列文章。本文首先介紹 ES6 中常用的三種變量聲明方式,然后討論了...

    snowLu 評(píng)論0 收藏0
  • es6必會(huì)之let && const

    摘要:副作用,無(wú)副作用可執(zhí)行和關(guān)鍵詞。和不能像一樣同一個(gè)下聲明多次和不會(huì)像一樣變量聲明提升原因是,存在因此不能,賦值前使用變量。 showImg(https://segmentfault.com/img/bVbhPlD?w=1271&h=715); 關(guān)鍵詞: let ,const, blocking scope ,temporal dead zone,redeclaration,reassi...

    ygyooo 評(píng)論0 收藏0
  • JavaScript30秒, 從入門(mén)到放棄

    摘要:三元運(yùn)算符遍歷過(guò)程中判斷遍歷數(shù)組值是否嚴(yán)格等于指定值,是,次數(shù)否,。三元運(yùn)算符判斷是否是一個(gè)數(shù)組,是,返回遞歸運(yùn)用后的值否,直接返回。秒,從入門(mén)到放棄博客地址秒,從入門(mén)到放棄微信公眾號(hào)地址秒,從入門(mén)到放棄 有意思 最近很火的github上的庫(kù)30-seconds-of-code,特別有意思,代碼也很優(yōu)雅。 能學(xué)es6 自己翻譯,能學(xué)英語(yǔ) 代碼很美,很優(yōu)雅,美即正義 函數(shù)式表達(dá),享受 ...

    TNFE 評(píng)論0 收藏0
  • React 深入系列3:Props State

    摘要:當(dāng)真正執(zhí)行狀態(tài)修改時(shí),依賴的并不能保證是最新的,因?yàn)闀?huì)把多次的修改合并成一次,這時(shí),還是等于這幾次修改發(fā)生前的。下篇預(yù)告深入系列組件的生命周期新書(shū)推薦進(jìn)階之路作者徐超畢業(yè)于浙江大學(xué),碩士,資深前端工程師,長(zhǎng)期就職于能源物聯(lián)網(wǎng)公司遠(yuǎn)景智能。 文:徐超,《React進(jìn)階之路》作者授權(quán)發(fā)布,轉(zhuǎn)載請(qǐng)注明作者及出處 React 深入系列3:Props 和 State React 深入系列,深...

    endiat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xuweijian

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<