摘要:閉包解決的問題獲取到函數(shù)內(nèi)部的變量讓變量不會隨著函數(shù)執(zhí)行完畢就銷毀而是保存在內(nèi)存中模擬私有變量閉包產(chǎn)生的問題容易造成內(nèi)存泄漏,保存的多了,卻沒有釋放的指向問題,在閉包里,指向的是關于閉包的小東西比如注釋部分省了外殼,
閉包概念:
能夠訪問另一個函數(shù)作用域的變量的函數(shù),來個栗子
為何son函數(shù)可以訪問到father函數(shù)的變量?
前提知識:
js的數(shù)據(jù)基本類型:Number boolean String Null Undefined Symbol 復雜類型:Object
基本數(shù)據(jù)類型放在的 “棧” 中 ,負責數(shù)據(jù)類型是放在“堆”中,對于js,存儲基本數(shù)據(jù)類型采用的是 鍵:值來存的。
來個手擼的圖
簡單的說在使用基本數(shù)據(jù)類型的時候,使用的值,在使用對象的時候使用其實是一個地址。
function也是一個Object的分支,
在函數(shù)執(zhí)行的時候,先進行預編譯的過程 ,所以先創(chuàng)建father的AO與GO,對于son,先創(chuàng)建自己的AO與GO,當自己的找不到的時候,會從父級的去查找。
隨著son執(zhí)行完畢,son的執(zhí)行環(huán)境被銷毀,接著執(zhí)行fn(),然后執(zhí)行環(huán)境被銷毀,所以只會剩下全局的環(huán)境,所以son函數(shù)還在的,雖然執(zhí)行環(huán)境(AO被銷毀)。
閉包解決的問題:
1、獲取到函數(shù)內(nèi)部的變量
2、讓變量不會隨著函數(shù)執(zhí)行完畢就銷毀而是保存在內(nèi)存中
3、模擬私有變量...........
閉包產(chǎn)生的問題
1、容易造成內(nèi)存泄漏,保存的多了,卻沒有釋放
2、this的指向問題,在閉包里,this指向的是window
關于閉包的小東西
比如 注釋部分省了外殼,
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/105867.html
摘要:大名鼎鼎的閉包面試必問。閉包的作用是什么。看到閉包在哪了嗎閉包到底是什么五年前,我也被這個問題困擾,于是去搜了并總結下來。關于閉包的謠言閉包會造成內(nèi)存泄露錯。閉包里面的變量明明就是我們需要的變量,憑什么說是內(nèi)存泄露這個謠言是如何來的因為。 本文為饑人谷講師方方原創(chuàng)文章,首發(fā)于 前端學習指南。 大名鼎鼎的閉包!面試必問。請用自己的話簡述 什么是「閉包」。 「閉包」的作用是什么。 首先...
摘要:在此例中,在匿名函數(shù)被返回后,它的作用域鏈初始化為包含函數(shù)的活動對象和全局變量對象。函數(shù)在執(zhí)行完畢后,其活動對象也不會被銷毀,因為匿名函數(shù)的作用域鏈仍然在引用這個活動對象,結果就是只是的執(zhí)行環(huán)境的作用域鏈會被銷毀,其活動對象會留在內(nèi)存中。 寫在前面 注:這個系列是本人對js知識的一些梳理,其中不少內(nèi)容來自書籍:Javascript高級程序設計第三版和JavaScript權威指南第六版,...
摘要:理解的函數(shù)基礎要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統(tǒng)的類繼承還要強大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉載請聯(lián)系作者獲得授權,非商業(yè)轉載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...
閱讀 1098·2021-09-22 15:19
閱讀 1715·2021-08-23 09:46
閱讀 2238·2021-08-09 13:47
閱讀 1416·2019-08-30 15:55
閱讀 1421·2019-08-30 15:55
閱讀 1981·2019-08-30 15:54
閱讀 2809·2019-08-30 15:53
閱讀 719·2019-08-30 11:03