成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

es6 - 函數(shù)的擴(kuò)展

youkede / 2314人閱讀

摘要:函數(shù)的擴(kuò)展上一篇,我們介紹了箭頭函數(shù)的內(nèi)容箭頭函數(shù)。匿名函數(shù)的屬性的值為空字符串。最佳實(shí)踐新引入的默認(rèn)參數(shù)和剩余參數(shù)特性都非常好用。推薦使用默認(rèn)參數(shù)代替原來默認(rèn)值的書寫方式,使用剩余參數(shù)代替的能力來操作參數(shù)。

es6 - 函數(shù)的擴(kuò)展

上一篇,我們介紹了es6箭頭函數(shù)的內(nèi)容 - es6 - 箭頭函數(shù)。

事實(shí)上,箭頭函數(shù)只是函數(shù)擴(kuò)展中最有意思的那部分,除此以外,es6函數(shù)還增加了一些其他的特性,下面將對它們進(jìn)行一一介紹。

語法 es6函數(shù)參數(shù)的默認(rèn)值

在es6之前,我們?nèi)绻胍O(shè)置函數(shù)參數(shù)的默認(rèn)值,需要這樣寫代碼:

function makeRequest(url, timeout, callback){
    timeout = timeout || 2000;
    callback = callback || function(){};
    //...
}

或者更加嚴(yán)謹(jǐn)?shù)膶懛?

timeout = (typeof timeout !== "undefined") ? timeout : 2000;
callback = (typeof callback !== "undefined") ? callback : function(){};

es6增加了函數(shù)參數(shù)默認(rèn)值的特性,可以直接在參數(shù)里設(shè)置

function makeRequest(url, timeout = 2000, callback = function(){}){
    //...
}

注意:只有在沒有傳入相應(yīng)的參數(shù)或是傳入undefined時,才會使用參數(shù)的默認(rèn)值。

es6剩余參數(shù)

剩余參數(shù)由三個點(diǎn)...和一個具名參數(shù)指定,比如

function pick(object, ...keys){
    console.log(keys);
}

在這個函數(shù)內(nèi)部,剩余參數(shù)keys是由傳入的第二個參數(shù)及以后的參數(shù)組成的數(shù)組。如果只傳入0個或者1個參數(shù),keys為空數(shù)組。

擴(kuò)展運(yùn)算符...

擴(kuò)展運(yùn)算符有點(diǎn)像是剩余參數(shù)的反作用。 我們使用一個場景來說明擴(kuò)展運(yùn)算符...該怎么使用:

function getMax(num1, num2){
    let result = arguments[0];
    for(var i=0; i result){
            result = arguments[i];
        }
    }
    return result;
}

上面這個函數(shù)大概實(shí)現(xiàn)了返回參數(shù)中最大值的功能。我們可以這樣調(diào)用它,getMax(num1, num2, num3, ...)。

可是如果我現(xiàn)在想把一個很大的數(shù)組 arr 作為參數(shù)傳入函數(shù)中呢?

或許可以使用apply方法:getMax.apply(null, arr);

可是這樣實(shí)現(xiàn)總感覺不大對勁,使用...能夠使得代碼意圖更加清晰: getMax(...arr)。

...運(yùn)算符能夠?qū)rr分割為多帶帶的參數(shù)傳入函數(shù),它甚至還可以和其他參數(shù)一起使用:
比如: getMax(num1, ...arr, num2)。代碼這樣看起來好多了。

函數(shù)的名稱屬性

es6給所有的函數(shù)都添加了name屬性,用來根據(jù)名稱識別函數(shù)。匿名函數(shù)的name屬性的值為空字符串。在實(shí)踐中,該屬性使用很少,不再贅述。

尾調(diào)用優(yōu)化

記得在js語言精粹中介紹遞歸部分時,作者說,js沒有尾調(diào)用優(yōu)化,所以遞歸可能因?yàn)槎褩R绯龆\(yùn)行失敗。
在es6中,js提供了尾調(diào)用優(yōu)化,什么是尾調(diào)用優(yōu)化?可以參考下面代碼:

function doSomething(){
    return doSomethingElse();
}

上面的doSomethingElse函數(shù)的調(diào)用語句是doSomething的最后一條語句,并作為doSomething返回值返回。上面的函數(shù)就實(shí)現(xiàn)了尾調(diào)用優(yōu)化。

尾調(diào)用優(yōu)化能夠提高函數(shù)的性能。它最適合的使用場景是在遞歸中使用。

在平時的開發(fā)中,除非使用遞歸或者是盡力優(yōu)化函數(shù)的性能,否則無需考慮太多尾遞歸優(yōu)化。

注意事項(xiàng)

使用剩余參數(shù)時,剩余參數(shù)在函數(shù)中最多只能有一個,并且要作為最后一個參數(shù)。

除了上面列舉的外,es6函數(shù)還引入了new.target元屬性。用來判斷函數(shù)的調(diào)用方式,是作為普通函數(shù)調(diào)用,還是使用new作為構(gòu)造函數(shù)調(diào)用。

最佳實(shí)踐

es6新引入的默認(rèn)參數(shù)和剩余參數(shù)特性都非常好用。推薦使用默認(rèn)參數(shù)代替原來arg1 = arg1 || 默認(rèn)值 的書寫方式, 使用剩余參數(shù)代替arguments的能力來操作參數(shù)。

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/107549.html

相關(guān)文章

  • ES6標(biāo)準(zhǔn)入門》讀書筆記

    摘要:標(biāo)準(zhǔn)入門讀書筆記和命令新增命令,用于聲明變量,是塊級作用域。用于頭部補(bǔ)全,用于尾部補(bǔ)全。函數(shù)調(diào)用的時候會在內(nèi)存形成一個調(diào)用記錄,又稱為調(diào)用幀,保存調(diào)用位置和內(nèi)部變量等信息。等到執(zhí)行結(jié)束再返回給,的調(diào)用幀才消失。 《ES6標(biāo)準(zhǔn)入門》讀書筆記 @(StuRep) showImg(https://segmentfault.com/img/remote/1460000006766369?w=3...

    HollisChuang 評論0 收藏0
  • ES6入門之對象擴(kuò)展

    摘要:循環(huán)遍歷對象自身的和繼承的可枚舉屬性不含屬性。返回一個數(shù)組,包含對象自身的所有屬性的鍵名。目前,只有對象方法的簡寫法可以讓引擎確認(rèn),定義的是對象的方法。showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada8456223b0e1); 1. 屬性的簡潔表示法 在ES6中 允許直接寫入變量和函數(shù),作為對象的屬性和方法,使得代碼的書寫更為簡潔。...

    RiverLi 評論0 收藏0
  • ES6學(xué)習(xí)手稿之基本類型擴(kuò)展

    摘要:它是一個通用標(biāo)準(zhǔn),奠定了的基本語法。年月發(fā)布了的第一個版本,正式名稱就是標(biāo)準(zhǔn)簡稱。結(jié)語的基本擴(kuò)展還有一些沒有在這里詳細(xì)介紹。 前言 ES6標(biāo)準(zhǔn)以及頒布兩年了,但是,好像還沒有完全走進(jìn)我們的日常開發(fā)。這篇文章從ES6的基本類型擴(kuò)展入手,逐步展開對ES6的介紹。 ECMAScript和JavaScript JavaScript是由Netscape創(chuàng)造的,該公司1996年11月將JavaSc...

    tommego 評論0 收藏0
  • ES6入門之函數(shù)擴(kuò)展

    摘要:如果所有函數(shù)都是尾調(diào)用,那么完全可以做到每次執(zhí)行時,調(diào)用幀只有一項(xiàng),這將大大節(jié)省內(nèi)存。等同于等同于注意,只有不再用到外層函數(shù)的內(nèi)部變量,內(nèi)層函數(shù)的調(diào)用幀才會取代外層函數(shù)的調(diào)用幀,否則就無法進(jìn)行尾調(diào)用優(yōu)化。 showImg(https://segmentfault.com/img/bVbrTHp?w=1080&h=1920); 1. 函數(shù)參數(shù)的默認(rèn)值 1.1 用法 在ES6之前是不能為...

    dackel 評論0 收藏0
  • ES6入門之函數(shù)擴(kuò)展

    摘要:如果所有函數(shù)都是尾調(diào)用,那么完全可以做到每次執(zhí)行時,調(diào)用幀只有一項(xiàng),這將大大節(jié)省內(nèi)存。等同于等同于注意,只有不再用到外層函數(shù)的內(nèi)部變量,內(nèi)層函數(shù)的調(diào)用幀才會取代外層函數(shù)的調(diào)用幀,否則就無法進(jìn)行尾調(diào)用優(yōu)化。 showImg(https://segmentfault.com/img/bVbrTHp?w=1080&h=1920); 1. 函數(shù)參數(shù)的默認(rèn)值 1.1 用法 在ES6之前是不能為...

    graf 評論0 收藏0

發(fā)表評論

0條評論

youkede

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<