ES6對函數(shù)的擴展

1.函數(shù)默認(rèn)參數(shù)

在ES6之前函數(shù)不能為參數(shù)指定默認(rèn)值蕉世,只能采用變通的方法

例如:

function(x,y){

? ? ? if(!y){

? ? ? ? ? ? ? ?y = "hello"

? ? ? }

}

ES6里面函數(shù)定義:

function(x,y=”hello“){ ...............}

function foo(x=1,y=3){ ? ? console.log(x,y) ? ? ? ?}

foo(undefined,null) ? ? //輸出 1,null?

?注意:如果傳入undefined將會觸發(fā)該參數(shù)等于默認(rèn)值橄仍,null則觸發(fā)不了;

? ? ? ? ? 指定了默認(rèn)值以后函數(shù)的length屬性將返回沒有指定默認(rèn)值的參數(shù)個數(shù),例如:foo.length = 0竞漾。

2.默認(rèn)參數(shù)的應(yīng)用

利用默認(rèn)參數(shù)可以指定某大哥參宿不可以省略,如果省略了就跑出錯誤窥翩;

3.函數(shù)的reset

參數(shù)使用了擴展運算符(...),用于獲取函數(shù)的多余參數(shù)畴蹭,reset參數(shù)后不能再有其他參數(shù),但之前可以有

function(...values)

? ? ? ? ? for(var val of values){

? ? ? ? ? ? ? ? ? ? ? sum += val;

? ? ? ? ? ? }

}

其中使用了ES6的for ......of.......循環(huán)

4.擴展運算符

1)...[2,3,4] = '2,3,4'

求數(shù)組最大值 ?Math.max(...[2,3,4,5])

2)數(shù)組合并arr1.concat(arr2) = [...arr1,...arr2]
3)與結(jié)構(gòu)賦值結(jié)合

const [fist,...last] = [1,2,3,4,5] ? //first =1;last = [2,3,4,5]

4)擴展運算符還可以將字符串轉(zhuǎn)換成真正的數(shù)組 [...“hello” ] = ['h','e','l','l','o']

5)任何類似數(shù)組對象都可以用擴展字符轉(zhuǎn)化為真正的數(shù)組[...nodeList] 鳍烁,ES5里需要用Array.prototype.slice.call(nodeList)

5.name屬性

函數(shù)的name屬性返回函數(shù)名

6.箭頭函數(shù)

?v=>v ? ? ? ? ? ? ? ? ? 等價于 ? ? ?function(v){return v}

(x,y)=> x+y ? ? ? 等價于 function(x,y){return x+y}

注意:1)函數(shù)體內(nèi)的this對象就是定義時所在的對象叨襟,不是使用時所在對象(可以理解為箭頭函數(shù)里面沒有this指針)

? ? ? ? ? ?2) ?不可以當(dāng)做構(gòu)造函數(shù),

? ? ? ? ? ?3)不可以使用arguments幔荒,

? ? ? ? ? ?4) ?不可以適應(yīng)yield命令糊闽,因此箭頭函數(shù)不能用作Generator函數(shù);

? ? ? ? ? ? 5) 不能使用bind 爹梁, call 右犹, apply方法改變this指向;

例如:function foo(){

? ? ? ? ? ? ? ? ? ?setTimeOut( () => { ?

? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log(this.id)

? ? ? ? ? ? ? ? ? ? ?},1000)

? ? ? ? ? ? ?}

? ? ? ? ? ? ?foo.call({'id':10) ? ?//10

7.函數(shù)綁定::

雙冒號左邊是對象姚垃,右邊是函數(shù)念链;

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

function ?f(x){

? ? ? ? ? return g(x);

}

尾調(diào)用是由于函數(shù)在調(diào)用時會生成一個調(diào)用幀,用來保存變量位置等信息;如果函數(shù)A的內(nèi)部調(diào)用函數(shù)B掂墓,那么在A的調(diào)用幀的上部就會有B的調(diào)用幀谦纱。而尾部調(diào)用由于是函數(shù)的最后一步操作,所以沒必要再保留外層函數(shù)的調(diào)用幀君编,這大大節(jié)省了內(nèi)存空間跨嘉。

9.尾遞歸和柯里化

柯里化意思是將多參數(shù)的函數(shù)轉(zhuǎn)化成但參數(shù)的形式。

尾遞歸尾調(diào)用自身即為尾遞歸吃嘿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祠乃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子兑燥,更是在濱河造成了極大的恐慌亮瓷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件降瞳,死亡現(xiàn)場離奇詭異寺庄,居然都是意外死亡,警方通過查閱死者的電腦和手機力崇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門斗塘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人亮靴,你說我怎么就攤上這事馍盟。” “怎么了茧吊?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵贞岭,是天一觀的道長。 經(jīng)常有香客問我搓侄,道長瞄桨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任讶踪,我火速辦了婚禮芯侥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乳讥。我一直安慰自己柱查,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布云石。 她就那樣靜靜地躺著唉工,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汹忠。 梳的紋絲不亂的頭發(fā)上淋硝,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天雹熬,我揣著相機與錄音,去河邊找鬼谣膳。 笑死竿报,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的参歹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隆判,長吁一口氣:“原來是場噩夢啊……” “哼犬庇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侨嘀,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臭挽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后咬腕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欢峰,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年涨共,在試婚紗的時候發(fā)現(xiàn)自己被綠了纽帖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡举反,死狀恐怖懊直,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情火鼻,我是刑警寧澤室囊,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站魁索,受9級特大地震影響融撞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粗蔚,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一尝偎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹏控,春花似錦冬念、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瀑构,卻和暖如春裆针,著一層夾襖步出監(jiān)牢的瞬間刨摩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工世吨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澡刹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓耘婚,卻偏偏與公主長得像罢浇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沐祷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前嚷闭,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法赖临。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,384評論 0 1
  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前胞锰,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法兢榨。
    趙然228閱讀 690評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理嗅榕,服務(wù)發(fā)現(xiàn),斷路器吵聪,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 三凌那,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點放入大括號吟逝,就能正確解讀該字符案怯。有了這...
    eastbaby閱讀 1,534評論 0 8
  • 涼拌豆角 食材: 豆角250g嘲碱,大蒜5瓣,紅辣椒2-3個局蚀,香油10g麦锯,姜,老干媽辣椒醬或辣椒油一大勺琅绅,生抽10g扶欣,...
    味博士閱讀 250評論 0 2