[JavaScript基礎(chǔ)]學(xué)習(xí)①⑧--箭頭函數(shù)

箭頭函數(shù)(ES6)

第一種格式

x => x * x

相當(dāng)于

function (x) {
    return x * x;
}

第二種格式

x => {
    if (x > 0) {
        return x * x;
    }
    else {
        return - x * x;
    }
}
// 兩個(gè)參數(shù):
(x, y) => x * x + y * y

// 無(wú)參數(shù):
() => 3.14

// 可變參數(shù):
(x, y, ...rest) => {
    var i, sum = x + y;
    for (i=0; i<rest.length; i++) {
        sum += rest[i];
    }
    return sum;
}

返回一個(gè)對(duì)象

// ok:
x => ({ foo: x })

var obj = {
    birth: 1990,
    getAge: function () {
        var b = this.birth; // 1990
        var fn = function () {
            return new Date().getFullYear() - this.birth; // this指向window或undefined
        };
        return fn();
    }
};

箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域,也就是外層調(diào)用者obj

var obj = {
    birth: 1990,
    getAge: function () {
        var b = this.birth; // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向obj對(duì)象
        return fn();
    }
};
obj.getAge(); // 25

用call()或者apply()調(diào)用箭頭函數(shù)時(shí),無(wú)法對(duì)this進(jìn)行綁定,即傳入的第一個(gè)參數(shù)被忽略

var obj = {
    birth: 1990,
    getAge: function (year) {
        var b = this.birth; // 1990
        var fn = (y) => y - this.birth; // this.birth仍是1990
        return fn.call({birth:2000}, year);
    }
};
obj.getAge(2015); // 25
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 本文是大神廖雪峰的JavaScript教程學(xué)習(xí)筆記。并不是教程,如有需要,請(qǐng)前往廖雪峰大神大博客. 一、函數(shù)定義和...
    0o凍僵的企鵝o0閱讀 512評(píng)論 1 3
  • 函數(shù)函數(shù)定義與調(diào)用變量作用域全局變量方法高階函數(shù)閉包箭頭函數(shù)$generator$ 函數(shù) 函數(shù)定義與調(diào)用 定義函數(shù)...
    染微言閱讀 629評(píng)論 0 5
  • 特別說(shuō)明,為便于查閱,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 720評(píng)論 0 1
  • 函數(shù)參數(shù)的默認(rèn)值 基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。 上面代碼檢查函數(shù)l...
    呼呼哥閱讀 3,476評(píng)論 0 1
  • 函數(shù)就是最基本的一種代碼抽象的方式。 定義函數(shù)function abs(x) {if (x >=0){return...
    _我和你一樣閱讀 459評(píng)論 0 0