<<深入理解ES6>>記:三

第三章 函數(shù)

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

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

2.arguments
在非嚴(yán)格模式下, 命名參數(shù)的變化會(huì)同步更新到arguments對(duì)象中, 然而, 在ESMAScript5的嚴(yán)格模式下, 取消了arguments對(duì)象的這個(gè)令人感動(dòng)疑惑的行為

function(first) {
    console.log(first === arguments[0]);    // true  (ESMAScript5的嚴(yán)格模式: true)
    first = "c";
    console.log(first === arguments[0]);    // true  (ESMAScript5的嚴(yán)格模式: false)
}
在ECMAScript6中, 如果函數(shù)使用了默認(rèn)參數(shù)值, 則無(wú)論是否顯示定義為嚴(yán)格模式, arguments對(duì)象行為都將與ECMAScript5嚴(yán)格模式下保持一致

3.默認(rèn)參數(shù)表達(dá)式

function getValue() {
    return 5;
}
function add(first, second = getValue()) {
}
console.log(add(1, 1));   // 2
console.log(add(1));      // 6

4.不定參數(shù)
在函數(shù)的命名參數(shù)前添加三個(gè)點(diǎn)(...)就表明這是個(gè)不定參數(shù),該參數(shù)為一個(gè)數(shù)組

  • 不定參數(shù)的使用限制:
    • 每個(gè)函數(shù)最多只能聲明一個(gè)不定參數(shù), 而且一定要在所有參數(shù)末尾
    • 不定參數(shù)不能使用于對(duì)象字面量setter中
  • 無(wú)論是否使用不定參數(shù), arguments對(duì)象總是包含所有傳入函數(shù)的參數(shù);
function pick(object, ...keys) {
    let result = Object.create(null);
    for(let i = 0, len = keys.length; i < len; i++) {
        result[keys[i]] = object[keys[i]];
    }
    return result;
}

5.展開運(yùn)算符
展開運(yùn)算符與不定參數(shù)類似(貌似功能相反那種)
展開運(yùn)算符可以打開指定的數(shù)組, 以獨(dú)立的形式傳入函數(shù)

需求:利用Math.max()求多個(gè)數(shù)的最大值, 希望以數(shù)組形式傳參
+ 可以這樣
let values = [25, 50, 75, 100];
console.log(Math.max.apply(Math, values));
+ 也可以這樣
console.log(Math.max(...values));

6.name屬性
為了解決匿名函數(shù)表達(dá)式的廣泛使用增加的調(diào)試難度, ES6增加了name屬性

function doSomething() {}
var doOther = function() {}
console.log(doSomething.name);
console.log(doOther.name);

7.元屬性(Metaproperty) new.target
為了判斷是否通過(guò)new關(guān)鍵字調(diào)用的問(wèn)題,ES6中引入new.target(注意點(diǎn): 只能在函數(shù)內(nèi)使用)這個(gè)元屬性

function Person(name) {
    if(typeof new.target !== 'undefined') {
        this.name = name;
    }else {
        throw new Error('必須通過(guò)new關(guān)鍵字調(diào)用函數(shù)');
    }
}
var p = new Person("Jack");
var notP = Person.call(p, "Rose");   // 拋出錯(cuò)誤

8.塊級(jí)函數(shù)
塊級(jí)函數(shù)和let函數(shù)的區(qū)別: let函數(shù)不會(huì)被提升

"use strict";

if(true) {
    console.log(typeof doSomething);   // 拋出錯(cuò)誤
    let doSomething = function() {}
    doSomething();
}
console.log(typeof doSomething);

9.箭頭函數(shù)

  • 沒(méi)有this, super, arguments, new.target綁定
  • 不能通過(guò)new關(guān)鍵字調(diào)用
  • 沒(méi)有原型
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末既鞠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子丁存,更是在濱河造成了極大的恐慌题涨,老刑警劉巖筑舅,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旺罢,死亡現(xiàn)場(chǎng)離奇詭異券敌,居然都是意外死亡棚菊,警方通過(guò)查閱死者的電腦和手機(jī)显押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門扳肛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乘碑,你說(shuō)我怎么就攤上這事挖息。” “怎么了兽肤?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵套腹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我资铡,道長(zhǎng)电禀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任笤休,我火速辦了婚禮尖飞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘店雅。我一直安慰自己政基,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布闹啦。 她就那樣靜靜地躺著沮明,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窍奋。 梳的紋絲不亂的頭發(fā)上珊擂,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音费变,去河邊找鬼。 笑死圣贸,一個(gè)胖子當(dāng)著我的面吹牛挚歧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吁峻,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼滑负,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼在张!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起矮慕,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤帮匾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后痴鳄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘟斜,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年痪寻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了螺句。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橡类,死狀恐怖蛇尚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情顾画,我是刑警寧澤取劫,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站研侣,受9級(jí)特大地震影響谱邪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜义辕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一虾标、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灌砖,春花似錦璧函、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至撩幽,卻和暖如春库继,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背窜醉。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工宪萄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榨惰。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓拜英,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親琅催。 傳聞我的和親對(duì)象是個(gè)殘疾皇子居凶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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

  • 三虫给,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進(jìn),只要將碼點(diǎn)放入大括號(hào)侠碧,就能正確解讀該字符抹估。有了這...
    eastbaby閱讀 1,514評(píng)論 0 8
  • 函數(shù) 函數(shù)形參的默認(rèn)值 在ES5中模擬默認(rèn)參數(shù) 第一種方式:缺陷: 如果給num傳入值為0, 那么因?yàn)楸灰暈閒al...
    Revontulet閱讀 412評(píng)論 0 0
  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前弄兜,不能直接為函數(shù)的參數(shù)指定默認(rèn)值药蜻,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,357評(píng)論 0 1
  • 第一章 塊級(jí)作用域綁定 let 和 const 都是不存在提升,聲明的都是塊級(jí)標(biāo)識(shí)符都禁止重聲明 每個(gè)const聲...
    NowhereToRun閱讀 1,573評(píng)論 0 2
  • 列子御風(fēng) 經(jīng)營(yíng)公司風(fēng)聲急 投資收獲出巧氣 雌雄并地走二步 向左或向右? 苦愁? 列子湯問(wèn)敞空間 天瑞時(shí)間豪氣膽 戀...
    芮涵琪雪閱讀 161評(píng)論 0 0