2018-07-22 學(xué)習(xí)總結(jié)

1.閉包

1.閉包就是函數(shù)的返回值也是個函數(shù)
當(dāng)一個函數(shù)的返回值也是一個函數(shù)時(shí),其內(nèi)部的局部變量還被新函數(shù)引用,內(nèi)部變量的使用就會造成錯誤。
注意:返回函數(shù)不要引用任何循環(huán)變量,或者后續(xù)會發(fā)生變化的變量(例如for循環(huán)的變量)
eg:

function count() {
    var arr = [ ];
    for (var i=1; i<=3; i++) {
        arr.push(function () {
            return i * i;
        });
    }
    return arr;
}
var results = count();
f();//此時(shí)內(nèi)層函數(shù)for的i已經(jīng)變?yōu)?,在被外層函數(shù)使用,得到的值最終是16

2.解決方法:再創(chuàng)建一個函數(shù),用該函數(shù)的參數(shù)綁定循環(huán)變量當(dāng)前的值,無論該循環(huán)變量后續(xù)如何更改,已綁定到函數(shù)參數(shù)的值不變。
eg:

function count() {
    var arr = [];
    for (var i=1; i<=3; i++) {
        arr.push((function (n) {
            return function () {
                return n * n;
            }
        })(i));//把該函數(shù)的參數(shù)綁定 i 當(dāng)前的值
    }
    return arr;
}

創(chuàng)建一個匿名函數(shù)并立刻執(zhí)行,形如:
(function (x) { return x*x } (3))

2.箭頭函數(shù)

1.箭頭函數(shù)相當(dāng)于匿名函數(shù),并且簡化了函數(shù)定義。
形式: x => xx;
等價(jià)于:
function( x) {
return x
x;
}
箭頭函數(shù)有兩種格式:
第1種是只包含一個表達(dá)式,連{ ... }和return都省略掉了。
eg:

x => x*x;

第2種可以包含多條語句,這時(shí)候就不能省略{ ... }和return:
eg:

 x => {
   if(x >0)
         return  x*x ;
   else
        return x*(-x);
}

兩個參數(shù),括號括起來: (x, y) => x * x + y * y;

如果返回對象,因?yàn)楹瘮?shù)體{.....}會與對象沖突,所以改變?yōu)?....):
x = ( { foo:x } );

箭頭函數(shù)的this的指向和作用域是根據(jù)上下文決定的。也更加方便的解決了之前出現(xiàn)的this指向?qū)ο髥栴}。
箭頭函數(shù)完全修復(fù)了this的指向,this總是指向詞法作用域,也就是外層調(diào)用者xiaoming。

var xiaoming = {
    name:'小明 ',
    birth: 1990,
    getAge: function () {
        var b = this.birth;   // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向xiaoming
        return fn();
    }
};
xiaoming.getAge(); // 28

由于this在箭頭函數(shù)中已經(jīng)按照詞法作用域綁定了,所以,用call()或者apply()調(diào)用箭頭函數(shù)時(shí),無法對this進(jìn)行綁定,即傳入的第一個參數(shù)被忽略。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,148評論 2 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,648評論 19 139
  • *還沒修改過 我已經(jīng)在日記說過,我在加拿大的時(shí)候買了一臺Kindle,這是讓我更方便看英文書,也不用買那么多...
    tommy寫作閱讀 450評論 0 1
  • 閱讀以及網(wǎng)絡(luò)探索是極其有趣的。之后就是音樂等帶給你的美的感受。 看到一個教授,名字叫John Tichy who ...
    阿大魚閱讀 610評論 0 0
  • 引子:年壽有時(shí)而盡,榮樂止乎其身,二者必至之常期,未若文章之無窮 正文/曹丕:在這樣對人生的失望里,保持微笑 作者...
    HUNK007閱讀 4,285評論 0 2

友情鏈接更多精彩內(nèi)容