如何才能通俗易懂的解釋javascript裡面的 閉包 ?

時間 2021-06-02 11:08:19

1樓:謝小六

乙個比較容易理解的定義:

函式巢狀函式時,當內層函式引用了外層函式作用域中的變數,並且內層函式在全域性環境下可訪問時,就形成了閉包。

2樓:hpoenixf

想要懂閉包,先要懂執行上下文,我之前寫過一篇文章,比較詳細的講了,有興趣的可以看下

3樓:

我感覺閉包這個東西當你理解了會感覺很簡單,但是通過別人講可能會把本來簡單的東西複雜化,所以自己去試一下,自己領悟會更好一點

4樓:我裡面有花生

簡單點說

功能: 乙個函式,函式裡面有乙個變數,呼叫了這個函式以後這個變數會變化,那麼等你下次再呼叫這個函式的時候,想用到剛剛那個已經變化的值,怎麼辦呢,普通函式呼叫之後裡面的變數是會銷毀的,這個時候就可以使用閉包。

結構: 乙個函式A,返回值也是乙個函式,這個函式使用了A裡面的乙個變數B,那麼這個函式A就是閉包,把B包進去了

使用: 呼叫A,將返回值賦值給乙個變數D,每次呼叫D,就能一直使用函式A裡面累計的值C,而不是初始化的值

let a = () => {

let b = 1;

return () =>alert(blet d = a();

d(); // 1;

d(); // 2;

d(); // 3;

5樓:蘑菇先生

一句話解釋:閉包就是跨作用域訪問變數!函式內訪問全域性變數大家都知道,那因為全域性變數的作用域已經覆蓋到函式:

varage=18

;functiona()

當全域性變數訪問函式內區域性變數時,因為區域性變數作用域只在函式內,所以無法訪問。但通過閉包就可以讓全域性變數跨作用域訪問區域性變數:

vara

=function

()};

varb=a

()();

6樓:

你沒法「通俗易懂」地理解乙個你原本不理解的東西,只有你通過努力去學習、認識、實踐,真的理解了,才會有「通俗易懂」的感覺,會覺得:

原來不過如此,當初怎麼沒人跟我這麼解釋呢,我趕緊給別人「通俗易懂」地解釋下,讓人家少走些彎路....

有句話大概是這麼說的:

不走「捷徑」,才能少走彎路。

7樓:

個人覺得閉包要結合js的scope概念才能理解清楚,js的scope基於function,而js中函式是可以作為普通物件到處傳遞的,於是便會有乙個function內部定義的函式放到其他任何地方使用的情況。而所謂的閉包就是當函式在其他地方使用的時候能儲存下函式所需要的執行環境,也即是函式能儲存下函式誕生時的環境。另外,如果用過chrome的develop工具之類單步過也會看到函式那兒有個closure,可以點開看看裡面的內容,如果有寫框架的經驗你會對閉包的用途理解得更深刻。

8樓:

Closures are created whenever a variable that is defined outside the current scope is accessed from within some inner scope.看英文

9樓:龍覺寺

怒答!被各種部落格坑過無數次,告訴我的都是怎麼建立乙個閉包,而不是告訴你到底什麼是閉包!

閉包:在爺爺的環境中執行了爸爸,爸爸中返回了孫子,本來爸爸被執行完了,爸爸的環境應該被清除掉,但是孫子引用了爸爸的環境,導致爸爸釋放不了。

這一坨就是閉包。

簡單來講,閉包就是乙個引用了父環境的物件,並且從父環境中返回到更高層的環境中的乙個物件。

10樓:

我覺得可以這麼比喻

函式就像乙個封閉的諮詢公司

呼叫這個函式就是給他們一些要求和資料(引數)公司根據社會上的公開資訊(全域性變數),和公司內部資料庫(區域性變數)進行處理後,返回給你乙個結果

可能是乙份報告(乙個變數),事情就算結束了比較複雜的話

也可能是返回給你乙個部門經理來和你協調之後的事情這個部門經理就是個閉包函式,可以訪問公開資訊(全域性變數)和公司內部資料庫(區域性變數)

你只有通過他去訪問這公司的內部資料庫

嗯……寫到這裡感覺把整個程式比喻成乙個公司算了,函式是各個部門

11樓:fantiny

任務:猜猜猜。

規則:猜是啥。(需求及介面定義:比如可以問箱子裡是啥動物,箱子裡動物是死還是活)

乙個不透明的密封的箱子。(外層入口函式)

你放了個小動物進去。(入口函式引數以及內部儲存變數)你放了個麻袋堵住了大箱子的入口。(返回函式)但是你的手可以通過深入麻袋摸到小動物。

(返回函式的引數)麻袋厚薄程度不同,你感知的效果不同。(選擇是否暴露內部函式,封裝程度和資料轉換)

別人問你箱子裡是什麼。(函式返回值)

箱子和麻袋組成的體驗就是閉包。

如何通俗易懂的解釋 剛兌 ?

寧波銀行 根據資管新規,金融機構在開展資產管理業務過程中發生的包括違反淨值確定原則對產品進行保本保收益 採取滾動發行等方式保本保收益 自行籌集資金償付或委託其他機構代償等行為都認定為 剛性兌付 簡單來說,剛性兌付 就是指當資管產品底層資產出現虧損或沒有達到預期收益,產品管理人仍將本金和收益按照約定分...

如何通俗易懂地解釋棒球規則?

老薑 沒有辦法。目前為止,我沒見過一篇能通俗易懂地介紹清楚棒球規則的文章。如果誰能講明白,就發財了。美國棒球協會幾十年來都一直想開啟中國市場,但是一直沒有人能用中文解釋清楚棒球規則,所以99 以上的中中國人始終都不懂打棒球的在幹嘛,所以美國棒球協會只能眼巴巴的看著nba在中國賺得盆滿缽滿。足球,踢進...

如何通俗易懂地解釋外微分?

null 外微分 和 Stokes 定理 大概是對應廣義的通量面積密度 對應 和散源強度體積密度 對應 對定向流形的邊界的積分 form 積分除以某種 維體積的密度.或許先對 的矩形證明 Stokes 定理是更簡單的引入.詳見這篇文章 john chen 我也是想理解外微分所以才找到知乎的這個問題,...