最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年02月21日 10:35:28   作者:前端達(dá)人  
這篇文章主要介紹了ES6基礎(chǔ)之展開語法(Spread syntax),主要介紹了擴(kuò)展語法的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

  • 函數(shù)傳參中的應(yīng)用
  • 數(shù)組的相關(guān)應(yīng)用
  • 剩余參數(shù)的應(yīng)用
  • 函數(shù)傳參中的應(yīng)用

ES6之前,如果我們希望將數(shù)組作為參數(shù)分別傳遞給函數(shù)中的參數(shù),我們可以使用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方法接受一個(gè)數(shù)組,將它們分拆成單獨(dú)參數(shù)傳遞函數(shù)進(jìn)行調(diào)用。

ES6的展開語法能讓我們以更簡潔的方式進(jìn)行調(diào)用,如下段代碼所示:

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

代碼運(yùn)行期間,JavaScript解釋器調(diào)用myFunction之前,將會(huì)用1,4表達(dá)式替換...運(yùn)算符:

let result = myFunction(...data);

上述代碼將會(huì)進(jìn)行如下轉(zhuǎn)換:

let result = myFunction(1,4);

替換后,函數(shù)中的代碼將會(huì)繼續(xù)執(zhí)行。

數(shù)組的相關(guān)應(yīng)用

數(shù)組的合并

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

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

代碼運(yùn)行期間,如下代碼:

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

上述代碼將會(huì)替換成如下代碼:

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

在push方法中的運(yùn)用

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

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

ES6的展開語法能以更簡潔的形式實(shí)現(xiàn),如下段代碼所示:

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

代碼運(yùn)行期間,如下代碼:

array2.push(...array1);

上述代碼將會(huì)替換成如下代碼:

array2.push(2, 3, 4);

傳遞多個(gè)數(shù)組參數(shù)

我們可以使用展開語法傳遞多個(gè)數(shù)組進(jìn)行參數(shù)傳遞,如下段代碼所示:

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”

剩余參數(shù)的應(yīng)用

我們知道JS函數(shù)內(nèi)部有個(gè)arguments對象,可以拿到全部實(shí)參?,F(xiàn)在ES6給我們帶來了一個(gè)新的對象,可以拿到除開始參數(shù)外的參數(shù),即剩余參數(shù),我們可以使用展開語法...進(jìn)行獲取。

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

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);

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

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

小節(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS實(shí)現(xiàn)帶動(dòng)畫的回到頂部效果

    JS實(shí)現(xiàn)帶動(dòng)畫的回到頂部效果

    這篇文章主要為大家詳細(xì) 介紹了JS實(shí)現(xiàn)帶動(dòng)畫的回到頂部效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • JavaScript的public、private和privileged模式

    JavaScript的public、private和privileged模式

    公共/私有變量和方法通過一個(gè)簡單的的例子,來展示如何使用JavaScript在類里面創(chuàng)建私有變量和方法
    2009-12-12
  • 詳解JS事件循環(huán)及宏任務(wù)微任務(wù)的原理

    詳解JS事件循環(huán)及宏任務(wù)微任務(wù)的原理

    在js中,我們一般將所有的任務(wù)都分成兩類,一種是同步任務(wù),另外一種是異步任務(wù)。而在異步任務(wù)中,又有著更加細(xì)致的分類,那就是微任務(wù)和宏任務(wù)。本文將詳細(xì)講解這二者的原理與使用,需要的可以參考一下
    2022-05-05
  • layui table 多行刪除(id獲取)的方法

    layui table 多行刪除(id獲取)的方法

    今天小編就為大家分享一篇layui table 多行刪除(id獲取)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 淺談Rx響應(yīng)式編程

    淺談Rx響應(yīng)式編程

    在學(xué)習(xí)Rx編程的過程中,理解Observable這個(gè)概念至關(guān)重要,常規(guī)學(xué)習(xí)過程中,通常需要進(jìn)行多次碰壁才能逐漸開悟。這個(gè)有點(diǎn)像小時(shí)候?qū)W騎自行車,必須摔幾次才能掌握一樣。當(dāng)然如果有辦法能言傳,則可以少走一些彎路,盡快領(lǐng)悟Rx的精妙
    2021-06-06
  • JS document內(nèi)容及樣式操作完整示例

    JS document內(nèi)容及樣式操作完整示例

    這篇文章主要介紹了JS document內(nèi)容及樣式操作,結(jié)合完整實(shí)例形式分析了JavaScript document內(nèi)容及樣式的獲取、修改、添加等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • JavaScript中常見的八個(gè)陷阱總結(jié)

    JavaScript中常見的八個(gè)陷阱總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript中八個(gè)常見的陷阱,這些陷阱雖然針對Javascript初學(xué)者,但是磚家們你們也可以看一看,避免入了這些坑,感興趣的朋友們下面來一起看看吧。
    2017-06-06
  • 序列化模塊json代碼實(shí)例詳解

    序列化模塊json代碼實(shí)例詳解

    這篇文章主要介紹了序列化模塊json代碼實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • WebSocket的簡單介紹及應(yīng)用

    WebSocket的簡單介紹及應(yīng)用

    因此,如果讓服務(wù)器端也可以主動(dòng)發(fā)送信息到客戶端,就可以很大程度改進(jìn)這些不足。WebSocket就是一個(gè)實(shí)現(xiàn)這種雙向通信的新協(xié)議。下面小編來簡單介紹下它
    2019-05-05
  • 利用JS動(dòng)態(tài)生成隔行換色HTML表格的兩種方法

    利用JS動(dòng)態(tài)生成隔行換色HTML表格的兩種方法

    這篇文章主要介紹了利用JS動(dòng)態(tài)生成隔行換色HTML表格的兩種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-10-10

最新評論

黔江区| 福鼎市| 五华县| 盐山县| 江油市| 永靖县| 保德县| 石首市| 儋州市| 平果县| 砚山县| 江阴市| 芷江| 平山县| 丰县| 正宁县| 鄂州市| 锦州市| 石阡县| 武胜县| 杭锦旗| 盐亭县| 嘉义县| 金川县| 门源| 洛扎县| 广东省| 体育| 陆川县| 西城区| 徐闻县| 同仁县| 新营市| 山阴县| 南皮县| 翁牛特旗| 临邑县| 牡丹江市| 凤阳县| 紫金县| 湘潭县|