摘要:閉包作用解析保存函數(shù)執(zhí)行形成一個私有作用域,函數(shù)執(zhí)行完成,開成的這個棧內(nèi)存一般情況下都會自動釋放函數(shù)執(zhí)行完成,當(dāng)前私有作用哉棧內(nèi)存中的某一部分內(nèi)容被內(nèi)存以外的其它東西變量元素的事件占用了,當(dāng)前的棧內(nèi)存就不能釋放掉,也就形成了不銷毀的私有作用
閉包作用解析:保存
函數(shù)執(zhí)行形成一個私有作用域,函數(shù)執(zhí)行完成,開成的這個棧內(nèi)存一般情況下都會自動釋放
函數(shù)執(zhí)行完成,當(dāng)前私有作用哉(棧內(nèi)存)中的某一部分內(nèi)容被內(nèi)存以外的其它東西(變量/元素的事件)占用了,當(dāng)前的棧內(nèi)存就不能釋放掉,也就形成了不銷毀的私有作用域(里面的私有變量也不會銷毀)
函數(shù)作用域函數(shù)內(nèi)部可以訪問函數(shù)外部的變量,
函數(shù)外部不可以訪問函數(shù)內(nèi)部的變量
當(dāng)在函數(shù)外部定義一個變量,變量在函數(shù)內(nèi)部發(fā)生了變化,函數(shù)內(nèi)部和外部都能訪問到這個變量
var a = 1; function fn1(){ a++; console.log(a) //2 } fn1() console.log(a) //2閉包作用例子:保存
fn():調(diào)用完函數(shù),就會釋放棧內(nèi)存
f(): 在函數(shù)外面有一個變量接收了這個返回值,此時 當(dāng)前作用域不能銷毀
function fn() { var i = 1; return function(n) { console.log(n + i++) } } var f = fn(); f(10); //11 正確:11,10+1=10,之后1為2,因為f(10),在函數(shù)fn()外面調(diào)用,故函數(shù)fn()里的棧內(nèi)存不銷毀,i一直存在 fn()(10); //12 正確:11 先執(zhí)行fn(),之后再執(zhí)行(10),即f(10),執(zhí)行fn是重新把所有的流程執(zhí)行一遍,臨時不銷毀,當(dāng)返回結(jié)果執(zhí)行完,沒有被占用了,就會釋放掉 f(20); //21 正確:22 //棧內(nèi)存沒有銷毀,20+1 fn()(20); //22 正確:21 第二次執(zhí)行fn是重新把所有的流程執(zhí)行一遍,和第一次沒有任何直接的關(guān)系,20+2=22
function fn() { var i = 1; return function(n) { console.log(n + i++) } } var f = fn(); f(10); //11 f(20); //22
function fn() { var i = 1; return function(n) { console.log(n + i++) } } var f = fn(); fn()(10); //11 fn()(20); //21
function fn() { var i = 1; return function(n) { console.log(n + i++) } } var f = fn(); fn()(10); //11 f(20); //21舉一反三
var i = 1; function fn() { return function(n) { console.log(n + i++) } } var f = fn(); f(10); //11 fn()(10); //12 f(20); //23 fn()(20); //24
function fn(i) { return function(n) { console.log(n + i++) } //console.log(i) //因為return,所以走不到這一hi } var f = fn(10); f(20); //30 正確:30 fn(10)(20); //31 正確:30 f(30); //40 正確:41 fn(20)(10); // 31 正確:30 f(40) //50 正確:52
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99276.html
摘要:閉包是什么這是一個在面試的過程中出現(xiàn)的概率為以上的問題,也是我們張口就來的問題。文章推薦我們面試中在被問到閉包這個問題是要注意的幾點閉包的延伸,讓面試變得 閉包是什么?這是一個在面試的過程中出現(xiàn)的概率為60%以上的問題,也是我們張口就來的問題。但是我們往往發(fā)現(xiàn),在面試的過程中我們的回答并不那么讓面試官滿意,我們雖然能張口說出一些但是卻不能系統(tǒng)的對這個問題進行回答。面試官希望加入自己團隊...
摘要:此時產(chǎn)生了閉包。導(dǎo)致,函數(shù)的活動對象沒有被銷毀。是不是跟你想的不一樣其實,這個例子重點就在函數(shù)上,這個函數(shù)的第一個參數(shù)接受一個函數(shù)作為回調(diào)函數(shù),這個回調(diào)函數(shù)并不會立即執(zhí)行,它會在當(dāng)前代碼執(zhí)行完,并在給定的時間后執(zhí)行。 上一節(jié)說了執(zhí)行上下文,這節(jié)咱們就乘勝追擊來搞搞閉包!頭疼的東西讓你不再頭疼! 一、函數(shù)也是引用類型的。 function f(){ console.log(not cha...
摘要:目錄執(zhí)行環(huán)境與作用域鏈立即執(zhí)行函數(shù)閉包知識點什么是閉包使用閉包的意義與注意點閉包的具體應(yīng)用小結(jié)這是基本語法的函數(shù)部分的第篇文章,主要講述了中比較重要的知識點閉包在講閉包之前,在上一篇函數(shù)二的基礎(chǔ)上,進一步深化執(zhí)行環(huán)境和作用域鏈的知識點,并補 目錄 1.執(zhí)行環(huán)境與作用域鏈 2. 立即執(zhí)行函數(shù) 3. 閉包知識點 3.1 什么是閉包 3.2 使用閉包的意義與注意點 3.3 閉包的具體應(yīng)用 4...
摘要:閉包在我的前端學(xué)習(xí)中一直也是盲點,之前很多次看到別人提到我都是完全聽不懂。閉包導(dǎo)致的問題因為閉包會使得函數(shù)中的變量都保存在內(nèi)存中,如不能及時釋放會對性能造成影響。 閉包在我的前端學(xué)習(xí)中一直也是盲點,之前很多次看到別人提到我都是完全聽不懂。最近一直看書和寫demo,對閉包也逐漸有所理解了,在這里寫下這篇博客。 從作用域鏈講起 首先明確幾個概念:1.JavaScript有函數(shù)級作用域,但沒...
摘要:一前言這個周末,注意力都在學(xué)習(xí)基礎(chǔ)知識上面,剛好看到了閉包這個神圣的東西,所以打算把這兩天學(xué)到的總結(jié)下來,算是鞏固自己所學(xué)。因此要注意閉包的使用,否則會導(dǎo)致性能問題。五總結(jié)閉包的作用能夠讀取其他函數(shù)內(nèi)部變量。 # 一、前言 這個周末,注意力都在學(xué)習(xí)基礎(chǔ)Js知識上面,剛好看到了閉包這個神圣的東西,所以打算把這兩天學(xué)到的總結(jié)下來,算是鞏固自己所學(xué)。也可能有些不正確的地方,也請大家看到了,麻...
閱讀 2420·2021-11-25 09:43
閱讀 1200·2021-09-07 10:16
閱讀 2613·2021-08-20 09:38
閱讀 2941·2019-08-30 15:55
閱讀 1458·2019-08-30 13:21
閱讀 890·2019-08-29 15:37
閱讀 1442·2019-08-27 10:56
閱讀 2096·2019-08-26 13:45