日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - 閉包在實際開發(fā)中有什么用?

瀏覽:207日期:2023-09-19 15:26:01

問題描述

javascript - 閉包在實際開發(fā)中有什么用?

看了一下視頻中對于閉包作用的解釋我還是表示不明白,比如說截圖中這段代碼完全可以在cmp函數(shù)中加一個passline參數(shù)來實現(xiàn),沒必要使用閉包。

誰能舉一個更加好的例子說明閉包的作用啊?

問題解答

回答1:

延長局部變量的生命周期,封裝私有變量

2. 延續(xù)局部變量的壽命img 對象經(jīng)常用于進行數(shù)據(jù)上報,如下所示:var report = function( src ){ var img = new Image(); img.src = src;};report( ’http://xxx.com/getUserInfo’ );但是通過查詢后臺的記錄我們得知,因為一些低版本瀏覽器的實現(xiàn)存在 bug,在這些瀏覽器下使用 report 函數(shù)進行數(shù)據(jù)上報會丟失 30%左右的數(shù)據(jù),也就是說, report 函數(shù)并不是每一次都成功發(fā)起了 HTTP 請求。丟失數(shù)據(jù)的原因是 img 是 report 函數(shù)中的局部變量,當(dāng) report 函數(shù)的調(diào)用結(jié)束后, img 局部變量隨即被銷毀,而此時或許還沒來得及發(fā)出 HTTP 請求,所以此次請求就會丟失掉?,F(xiàn)在我們把 img 變量用閉包封閉起來,便能解決請求丟失的問題:var report = (function(){ var imgs = []; return function( src ){var img = new Image();imgs.push( img );img.src = src; }})();回答2:

保存變量 大部分時候我是用它來替代全局變量 避免造成變量污染

回答3:

閉包解決的問題:基于JS的詞法作用域規(guī)則,其訪問是一直向上查找作用域,直到全局作用域。而想直接訪問某個作用域可通過閉包解決。

function foo(){var a = 1;function bar(){ console.log(a);}return bar;}var baz = foo();baz();

bar詞法作用域可以訪問foo內(nèi)部作用域,foo執(zhí)行后返回bar,最后賦值給baz,可以獲取并訪問foo內(nèi)部作用域,只是標(biāo)識符不同而已。該代碼就使用了閉包,可以說寫JS代碼處處可見閉包,使用閉包還有一個好處就是引用的作用域不會被垃圾回收處理,當(dāng)然不合理的使用會耗內(nèi)存

閉包用來增加變量(能訪問某作用域,自然能加變量)或者延長其生命周期(作用域被引用,自然會延長)

for (var i = 0; i < 5; i++){ setTimeout(function(){ console.log(i)},i * 1000)} for (var i = 0; i < 5; i++){ (function (i) { setTimeout(function(){ console.log(i)},i * 1000) })(i) }

第一個循環(huán)是聲明了幾個函數(shù),共享全局i變量(變量和函數(shù)聲明都提升了)。第二個循環(huán)是定義了幾個立即執(zhí)行函數(shù),又傳遞了i值,故每個i值都有自己的作用域。這個是一個比較好的例子,閉包+循環(huán),只是這個比較特別,閉包訪問自身的作用域。

當(dāng)然最能體現(xiàn)閉包思想的是模塊,返回一個方法,該方法就相當(dāng)引入了一個作用域。

閉包:就是一個獲取并訪問某個作用域,可在外訪問或者自身內(nèi)部訪問。

回答4:

最大的兩個作用

讀取函數(shù)內(nèi)部變量

讓變量值始終保持在內(nèi)存里

第一個不贅述,看第二個,舉例

function f1(){var n=999;nAdd=function(){n+=1}function f2(){alert(n);}return f2;}var result=f1();result(); // 999nAdd();result(); // 1000

result實際上就是閉包f2函數(shù)。它一共運行了兩次,第一次的值是999,第二次的值是1000。這證明了,函數(shù)f1中的局部變量n一直保存在內(nèi)存中,并沒有在f1調(diào)用后被自動清除。為什么會這樣呢?原因就在于f1是f2的父函數(shù),而f2被賦給了一個全局變量,這導(dǎo)致f2始終在內(nèi)存中,而f2的存在依賴于f1,因此f1也始終在內(nèi)存中,不會在調(diào)用結(jié)束后,被垃圾回收機制(garbage collection)回收。這段代碼中另一個值得注意的地方,就是'nAdd=function(){n+=1}'這一行,首先在nAdd前面沒有使用var關(guān)鍵字,因此nAdd是一個全局變量,而不是局部變量。其次,nAdd的值是一個匿名函數(shù)(anonymous function),而這個匿名函數(shù)本身也是一個閉包,所以nAdd相當(dāng)于是一個setter,可以在函數(shù)外部對函數(shù)內(nèi)部的局部變量進行操作

管理私有變量和私有方法,將對變量(狀態(tài))的變化封裝在安全的環(huán)境中

將代碼封裝成一個閉包形式,等待時機成熟的時候再使用,比如實現(xiàn)柯里化和反柯里化

需要注意的:

由于閉包內(nèi)的部分資源無法自動釋放,容易造成內(nèi)存泄露 解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。

閉包會在父函數(shù)外部,改變父函數(shù)內(nèi)部變量的值。所以,如果你把父函數(shù)當(dāng)作對象(object)使用,把閉包當(dāng)作它的公用方法(Public Method),把內(nèi)部變量當(dāng)作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數(shù)內(nèi)部變量的值。

回答5:

如果我說, set_passLine 其實就是兩個參數(shù)的函數(shù),你能接受嗎?

def set_passLine(passline)(val): # 雖然這不符合語法 pass

這個和函數(shù)

def set_passLine(passline,val): pass

在功能上是等價的,但前者,不必一次性給出所有參數(shù)來調(diào)用。

另外,第一種寫法可以實現(xiàn)和類一樣的功能:

def set_passLine(passline): def cmp(val):pass def resetPassLine(newPassline):passline=newPasslinepass return (cmp,resetPassLine)

雖然這些都是相同功能的不同實現(xiàn)。但是人們越來越發(fā)現(xiàn)函數(shù)式編程比其他的方式更好,更好的意思是指在代碼量上更好,更清晰(但是對程序員的要求越來越高)。

給個鏈接吧,但是是我用 js 寫的:http://zonxin.github.io/post/...

P.S.面向?qū)ο蟮木幊叹褪前眩械摹拔矬w”看為對象,編程就是,使用對象模擬“物體”的行為,即模擬某個“世界”的運行。而函數(shù)式編程,只關(guān)心“物體”的初始狀態(tài)和“物體”經(jīng)過函數(shù)之后的最終狀態(tài),而不必關(guān)心其中的過程,編程就是處理這些函數(shù)的復(fù)合。

回答6:

我一直是這么理解的:保護內(nèi)部變量,通過暴漏API進行操作。

var name='meimei'function Private(){ var name = 'leilei'; return {getName:function(){ console.log(name)},setName:function(val){ name = val;} }}var private = Private();private.getName()//'leilei'private.setName('xiaoming')private.getName()//'xiaoming'name//'meimei'//通過暴漏API來操作內(nèi)部變量。jquery:(function(){... window.$=window.jquery=window.jQuery=...})//一個匿名自執(zhí)行函數(shù)通過window暴漏jquery,內(nèi)部變量不會受到其他全局變量的污染,只能通過$的API進行操作。

以上是個人理解

回答7:

避免變量污染,但如果是在ES6中,用let和const就可以解決這個問題了

回答8:

初級水平來看只知道1、可以訪問到局部變量2、可以一直保存在內(nèi)存中

所以使用頻率不宜過高,會造成內(nèi)存泄漏

回答9:

答個我印象深刻的 偏函數(shù)

function logger(logType){ return console.log.bind(console, logType); }var info = logger(’[INFO]’); var error = logger(’[ERROR]’); info(’this is an info’); // => // [INFO] this is an infoerror(’this is an error’); // => // [ERROR] this is an error

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩在线观看首页| 久久久久九九精品影院| 国产精品成久久久久| 国产精品亚洲欧美一级在线| 日韩高清在线不卡| 亚洲欧美日韩国产一区二区| 免费看黄色91| 日韩综合一区二区| 一区二区精品| 精品资源在线| 国产麻豆精品久久| 男人操女人的视频在线观看欧美| 99热精品久久| 婷婷六月综合| 亚洲免费在线| 免费日本视频一区| 日韩高清国产一区在线| 国产精品中文字幕制服诱惑| 精品在线网站观看| 天堂中文av在线资源库 | 久久久国产精品一区二区中文| 日韩理论片av| 一级欧洲+日本+国产| 香蕉久久国产| 国产日产高清欧美一区二区三区| 精品久久久中文字幕| 国产精品亚洲一区二区三区在线观看| 婷婷亚洲综合| 亚洲综合福利| 国产视频一区二| 首页国产精品| 亚洲激情国产| 日韩成人精品一区二区三区| 欧美激情一区| 久久久久午夜电影| 亚洲一区二区小说| 国产福利一区二区精品秒拍| 日韩欧美综合| 亚洲专区视频| 国产成人久久精品一区二区三区| 亚洲天堂久久| 亚洲另类黄色| 韩国女主播一区二区三区| 久久高清免费| 亚洲ww精品| 9999国产精品| 久热综合在线亚洲精品| 久久激五月天综合精品| av日韩中文| 亚洲午夜久久| av免费不卡国产观看| 日韩影院在线观看| 国产精品对白| 午夜久久影院| 国产精品**亚洲精品| 久久久精品久久久久久96 | sm捆绑调教国产免费网站在线观看| 狂野欧美性猛交xxxx| 国产成人久久精品一区二区三区| 久久不卡国产精品一区二区| 国产一区二区三区久久 | 成人看片网站| 国产午夜精品一区二区三区欧美| 国精品一区二区| 爽好久久久欧美精品| 亚洲伦乱视频| 久久久久久久久99精品大| 日本在线不卡视频| 国产欧美日韩影院| 久久伦理在线| 久久国产乱子精品免费女| 中文字幕成在线观看| 一区二区三区四区日韩| 国产粉嫩在线观看| 日韩av一区二区在线影视| 日韩一区二区三区在线免费观看| 欧美亚洲三区| 在线国产一区| 快播电影网址老女人久久| 欧美专区一区| 先锋影音国产一区| 日韩成人亚洲| 久久久久黄色| 模特精品在线| 涩涩av在线| 国产香蕉精品| 视频一区免费在线观看| 秋霞影院一区二区三区| 久久精品一区二区国产| 日本成人在线一区| 日韩午夜精品| 在线一区视频观看| 欧美好骚综合网| 美女精品一区二区| 国产亚洲电影| 亚洲欧美专区| 香蕉久久夜色精品国产| 欧美不卡高清| www.51av欧美视频| 成人在线免费观看网站| 国产精品久久久免费| 亚洲精品乱码| 在线精品观看| 亚洲欧美网站| 蜜臀91精品国产高清在线观看| 天堂中文在线播放| 色偷偷偷在线视频播放| 国产aa精品| 国产精品qvod| 日韩av资源网| 91精品一区| 亚洲一二av| 亚洲综合专区| 午夜在线一区| 欧美另类专区| 日韩视频在线一区二区三区 | 久久精品超碰| 日韩精品免费观看视频| 丝袜国产日韩另类美女| 97se综合| 亚洲不卡系列| 成人av三级| 久久麻豆视频| 久久久久观看| 黄色网一区二区| 免费在线亚洲欧美| 麻豆一区二区三区| 久久免费视频66| 成午夜精品一区二区三区软件| 精品国产黄a∨片高清在线| 麻豆精品蜜桃视频网站| 美腿丝袜亚洲一区| 精品一区不卡| 日本久久精品| 久久久精品久久久久久96| 日韩在线短视频| 亚洲福利精品| 久久一区二区三区喷水| 国内精品福利| 国产亚洲福利| 午夜一级久久| 综合色就爱涩涩涩综合婷婷| 蜜臀va亚洲va欧美va天堂| 男女男精品网站| 88久久精品| 国产精品日本一区二区三区在线| 麻豆久久一区| 欧美aa在线观看| 亚洲无线一线二线三线区别av| 激情欧美丁香| 美女尤物久久精品| 7777精品| 欧美激情麻豆| 日韩久久电影| 一本一本久久| 91精品一区| 国产aⅴ精品一区二区四区| 国产精品99一区二区| 亚洲一区二区三区高清| 日本h片久久| 天堂av在线| 日本欧美在线看| 国产精品久久久久久久久久久久久久久| 国模精品一区| 日韩视频中文| 国产精品日韩精品在线播放| 免费污视频在线一区| 国产女优一区| 久久av影院| 婷婷成人在线| 亚洲tv在线| 欧美日韩在线观看首页| 首页欧美精品中文字幕| 欧美国产精品| 午夜国产精品视频| 国产欧美日韩一级| 亚洲成av人片一区二区密柚| 最新国产精品久久久| 久久亚洲精品中文字幕| 激情欧美一区二区三区| 欧美偷窥清纯综合图区| se01亚洲视频| 久久国产66| 精品一区二区三区四区五区| 天堂资源在线亚洲| 日韩三区四区| 日韩在线免费| 国产美女撒尿一区二区| 美女少妇全过程你懂的久久| 国产麻豆精品| 日韩一级欧洲| 精品视频91| 中文不卡在线| 日韩精品不卡一区二区| 日韩欧美中文在线观看| 福利一区二区免费视频| 亚洲精品伊人| av资源亚洲| 国产精品入口久久| 伊人国产精品|