摘要:第三個是在里的由于在匿名函數(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)的面試題,對核心知識點中的作用域閉包上下文進行了梳理。本篇重點介紹閉包和。所以,有另一種說法認為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實體。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 滿滿的干貨,面試必bei系列,參考大量資料,并集...
摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。 今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。 很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。 201...
摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。 今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。 很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。 201...
摘要:今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。的確如此,到目前為止,還沒有任何一個大學會教前端,倒是有些培訓班,會講網(wǎng)頁開發(fā)三劍客。 今天給大家分享的主題是前端的自我成長,這是一個關(guān)于成長的話題。 很多人都有這樣的感覺:聽了很多技術(shù)圈子的分享,有的有深度,有的循循善誘,深入淺出,但是呢,幾年下來,到底哪些用上了,哪些對自己真的有幫助了?反而有些模糊。 201...
閱讀 2285·2021-11-15 11:37
閱讀 2954·2021-09-01 10:41
閱讀 787·2019-12-27 11:58
閱讀 747·2019-08-30 15:54
閱讀 715·2019-08-30 13:52
閱讀 2930·2019-08-29 12:22
閱讀 1075·2019-08-28 18:27
閱讀 1452·2019-08-26 18:42