国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

我對js函數(shù)閉包的理解

testHs / 1095人閱讀

摘要:第三個是在里的由于在匿名函數(shù)媽媽的肚子里,但是也是個獨立的個體,,當運行時,發(fā)現(xiàn)函數(shù)里用的聲明,就不用再進一步去匿名函數(shù)媽媽肚子里去找了。直接就輸出第四個是在里,但是沒有的聲明所以當運行時,就去匿名函數(shù)媽媽的肚子里去找,果然找到了。

個人理解,請大家指正

個人理解閉包作用:

閉包可以用來隔離作用域(簡單來說可以隔離 環(huán)境變量、函數(shù)...etc),也就是說 一般情況下 函數(shù)里申明的變量不會影響到函數(shù)外面;這就是其中的一種優(yōu)勢(代碼之間互不影響,避免 因 申明的變量命一樣造成 代碼塊沖突)

//想必大家都看見這個這種函數(shù)形式
/*
運行結(jié)果就是
0 0
1 2
11 12
1 2
*/
var a = b = 0
console.log(a, b) // 0 0
+(function () {
    var a = 1
    var b = 2
    console.log(a, b) // 1 2
    function fn () {
         var a = 11
         var b = 12
        console.log(a,b)
    }
    function fnz () {
        console.log(a, b) 
    }
    fn()  // 11 12
    fnz() // 1 2
}())

解析上面代碼塊:
第一個console, 輸出00, 為什么?因為在全局環(huán)境下, 此時運行console.log(a, b) 就會 找到 聲明在全局的 a,b = 0.

第二個console, 因為是在匿名函數(shù)里,當運行console時,就會先找匿名函數(shù)里有沒有聲明a,b,擦,在媽媽肚子里真找到了a,b變量,就不用去全局奶奶肚子里去找了。就此終止 輸出 1 2。

第三個console 是在fn里的, 由于 fn 在 匿名函數(shù)媽媽的肚子里,但是 fn 也是個獨立的個體,hihi,
當運行console時,發(fā)現(xiàn) fn函數(shù)里用 a,b的聲明,就不用再進一步去匿名函數(shù)媽媽肚子里去找了。
直接就輸出 11 12.

第四個console 是在 fnz 里, 但是 fnz 沒有 a、b 的聲明,所以當console運行時, 就去匿名函數(shù)媽媽的肚子里去找, 果然找到了。查找就此結(jié)束, 不在去打擾奶奶了。 輸出 1,2.

總結(jié),書中寫的作用域鏈

2.復(fù)用代碼,復(fù)用配置,減少代碼量。
 // 以下代碼不是為了裝x
 // 傳進去一個函數(shù) a 輸出一個 新的函數(shù) b. 相當于給函數(shù)a 增加了新的功能。 這就是 thrFn 函數(shù)的作用,封裝邏輯,提供新的功能
// fn 相當于 a 函數(shù)
 var thrFn  = function (fn, time, maxLog) {
                var timeK = null
                // 
                var oTime = new Date().getTime()
                var execFn = function () {
                    fn()
                    oTime = new Date().getTime()
                }
                // 相當與 b 函數(shù)
                return function () {
                    var nTime = new Date().getTime()
                    clearTimeout(timeK)
                    if (nTime - oTime > maxLog) {
                        execFn()
                    } else {
                        timeK = setTimeout(execFn, time)
                    }
                }
    }

我的 javascript 節(jié)流函數(shù) 與 消抖 函數(shù) 解析傳送門

神煩以下, 我就感覺出題...
var a = []
var b = []
var c = []
for(var i = 0; i < 8; i++) {
    a[i] = function () {
        console.log(i)
    }
}
for(var j = 0; j < 8; j++) {
    b[j] = (function (j) {
        return function () {
            console.log(j)
        }
    })(j)
}
for(var k = 0; k < 8; k++) {
    c[k] = (function () {
        return function () {
            console.log(k)
        }
    })(k)
}
a[6]() // 8
b[6]() // 6
c[6]() // 8

如果你感覺,你真的懂閉包,請看一遍 redux 源碼, 尤其是中間件 設(shè)計的那一部分。

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

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

相關(guān)文章

  • JS核心知識點梳理——上下文、作用域、閉包、this(中)

    摘要:引言滿滿的干貨,面試必系列,參考大量資料,并集合自己的理解以及相關(guān)的面試題,對核心知識點中的作用域閉包上下文進行了梳理。本篇重點介紹閉包和。所以,有另一種說法認為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實體。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 滿滿的干貨,面試必bei系列,參考大量資料,并集...

    rottengeek 評論0 收藏0
  • 一個前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。   今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。   很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。   201...

    sugarmo 評論0 收藏0
  • 一個前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。   今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。   很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。   201...

    LinkedME2016 評論0 收藏0
  • 一個前端自我修養(yǎng)

    摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。   今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。   很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。   201...

    Michael_Ding 評論0 收藏0

發(fā)表評論

0條評論

testHs

|高級講師

TA的文章

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