成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

js閉包的9個使用場景

瀏覽:187日期:2024-04-09 10:23:26
1.返回值(最常用)

//1.返回值 最常用的 function fn(){var name='hello';return function(){ return name;} } var fnc = fn(); console.log(fnc())//hello

這個很好理解就是以閉包的形式將 name 返回。

2.函數賦值

var fn2;function fn(){ var name='hello'; //將函數賦值給fn2 fn2 = function(){return name; }}fn()//要先執行進行賦值,console.log(fn2())//執行輸出fn2

在閉包里面給fn2函數設置值,閉包的形式把name屬性記憶下來,執行會輸出 hello。

3.函數參數

function fn(){ var name='hello'; return function callback(){return name; }}var fn1 = fn()//執行函數將返回值(callback函數)賦值給fn1, function fn2(f){ //將函數作為參數傳入 console.log(f());//執行函數,并輸出}fn2(fn1)//執行輸出fn2

用閉包返回一個函數,把此函數作為另一個函數的參數,在另一個函數里面執行這個函數,最終輸出 hello

4.IIFE(自執行函數)

(function(){var name='hello';var fn1= function(){ return name;}//直接在自執行函數里面調用fn2,將fn1作為參數傳入fn2(fn1); })() function fn2(f){//將函數作為參數傳入console.log(f());//執行函數,并輸出 }

直接在自執行函數里面將封裝的函數fn1傳給fn2,作為參數調用同樣可以獲得結果 hello

5.循環賦值

//每秒執行1次,分別輸出1-10for(var i=1;i<=10;i++){ (function(j){//j來接收setTimeout(function(){ console.log(j);},j*1000); })(i)//i作為實參傳入}

如果不采用閉包的話,會有不一樣的情況,可以看我自己 閉包 的文章。

6.getter和setter

function fn(){var name=’hello’setName=function(n){ name = n;}getName=function(){ return name;} //將setName,getName作為對象的屬性返回return { setName:setName, getName:getName} } var fn1 = fn();//返回對象,屬性setName和getName是兩個函數 console.log(fn1.getName());//getterfn1.setName(’world’);//setter修改閉包里面的name console.log(fn1.getName());//getter

第一次輸出 hello 用setter以后再輸出 world ,這樣做可以封裝成公共方法,防止不想暴露的屬性和函數暴露在外部。

7.迭代器(執行一次函數往下取一個值)

var arr =[’aa’,’bb’,’cc’];function incre(arr){ var i=0; return function(){//這個函數每次被執行都返回數組arr中 i下標對應的元素 return arr[i++] || ’數組值已經遍歷完’; }}var next = incre(arr);console.log(next());//aaconsole.log(next());//bbconsole.log(next());//ccconsole.log(next());//數組值已經遍歷完8.首次區分(相同的參數,函數不會重復執行)

var fn = (function(){ var arr=[];//用來緩存的數組 return function(val){ if(arr.indexOf(val)==-1){//緩存中沒有則表示需要執行 arr.push(val);//將參數push到緩存數組中 console.log(’函數被執行了’,arr); //這里寫想要執行的函數 }else{ console.log(’此次函數不需要執行’); } console.log(’函數調用完打印一下,方便查看已緩存的數組:’,arr); } })(); fn(10); fn(10); fn(1000); fn(200); fn(1000);

執行結果如下:

js閉包的9個使用場景

可以明顯的看到首次執行的會被存起來,再次執行直接取。

9.緩存

//比如求和操作,如果沒有緩存,每次調用都要重復計算,采用緩存已經執行過的去查找,查找到了就直接返回,不需要重新計算 var fn=(function(){var cache={};//緩存對象var calc=function(arr){//計算函數 var sum=0; //求和 for(var i=0;i<arr.length;i++){sum+=arr[i]; } return sum;} return function(){ var args = Array.prototype.slice.call(arguments,0);//arguments轉換成數組 var key=args.join(',');//將args用逗號連接成字符串 var result , tSum = cache[key]; if(tSum){//如果緩存有 console.log(’從緩存中取:’,cache)//打印方便查看result = tSum; }else{//重新計算,并存入緩存同時賦值給resultresult = cache[key]=calc(args);console.log(’存入緩存:’,cache)//打印方便查看 } return result;} })(); fn(1,2,3,4,5); fn(1,2,3,4,5); fn(1,2,3,4,5,6); fn(1,2,3,4,5,8); fn(1,2,3,4,5,6);

輸出結果:

js閉包的9個使用場景

以上就是js閉包的9個使用場景的詳細內容,更多關于js 閉包使用場景的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美性xxxxxxxx| 欧美日韩国产电影| 久久久成人网| 亚洲视频精选在线| 欧美亚州在线观看| 国产网红主播福利一区二区| 国产成人av网站| 欧美日本在线播放| 老司机午夜精品| 亚洲欧美bt| 亚洲在线免费播放| 国产日韩一区二区三区在线| 国产精品久久久久久久第一福利 | 欧美日韩系列| 国产欧美日韩视频一区二区| www..com久久爱| 精品动漫一区二区三区在线观看| 国产成人精品免费一区二区| 欧美狂野另类xxxxoooo| 蜜乳av一区二区| 欧美体内she精高潮| 麻豆精品在线看| 91传媒视频在线播放| 奇米色一区二区三区四区| 久久久久91| 性做久久久久久久久| 美女精品在线| 日本特黄久久久高潮| 91国在线观看| 九九国产精品视频| 91麻豆精品国产91久久久更新时间| 激情六月婷婷久久| 精品视频一区二区不卡| 精品影院一区二区久久久| 欧美性极品少妇| 九色porny丨国产精品| 69堂成人精品免费视频| 国产毛片精品一区| 欧美一二三区在线观看| 成人精品在线视频观看| 精品国产制服丝袜高跟| 95精品视频在线| 国产三级久久久| 狠色狠色综合久久| 一区二区三区免费在线观看| 久久精品盗摄| 国内精品在线播放| 日韩欧美国产综合| 欧美久久一区| 亚洲一二三区在线观看| 久久福利电影| 日本不卡的三区四区五区| 欧美日韩你懂得| 成人av网址在线| 欧美国产精品一区二区| 黄色在线成人| 午夜不卡av在线| 337p亚洲精品色噜噜| 91蜜桃婷婷狠狠久久综合9色| 国产精品无码永久免费888| 国产精品久久久久久久久久妞妞| 亚洲成av人片| 欧美福利电影网| 91亚洲精品一区二区乱码| 亚洲精选一二三| 欧美专区日韩专区| 成人免费视频一区| 成人欧美一区二区三区黑人麻豆| 久久狠狠婷婷| 国产高清久久久久| 国产精品欧美一区喷水| 亚洲制服av| 国内精品久久久久影院一蜜桃| 欧美岛国在线观看| 日韩视频一区二区三区在线播放免费观看| 午夜精品久久久久| 日韩欧美专区在线| 国内精品久久久久久久果冻传媒 | 久久精品夜色噜噜亚洲aⅴ| 亚洲激情欧美| 紧缚奴在线一区二区三区| 国产亚洲综合性久久久影院| 久久国产精品一区二区三区四区 | www日韩大片| 国产精品综合色区在线观看| 国产又黄又大久久| 国产精品久久久久影院亚瑟| 久热re这里精品视频在线6| 国产精品亚洲一区二区三区妖精| 国产欧美日产一区| 久久久久久精| 99精品欧美一区| 天堂在线亚洲视频| 久久在线观看免费| 久久亚洲影院| 99久久免费精品高清特色大片| 亚洲午夜电影网| 精品国产一区二区亚洲人成毛片 | 91玉足脚交白嫩脚丫在线播放| 午夜免费久久看| 欧美变态口味重另类| 国产亚洲一区在线播放| 国产aⅴ综合色| 亚洲一级二级三级| 久久精品免费在线观看| 在线这里只有精品| 伊人精品视频| 丰满放荡岳乱妇91ww| 天天综合色天天| 国产日产欧美一区| 欧美日免费三级在线| 狠狠色综合色区| 国产精品一区二区免费不卡| 一区二区视频在线看| 精品久久久久久久人人人人传媒 | 欧美二区三区91| 99精品视频免费观看视频| 成人精品免费看| 婷婷中文字幕一区三区| 欧美国产激情二区三区| 欧美一区二区三区影视| 色综合久久久久网| 国语精品中文字幕| 丁香另类激情小说| 蜜桃久久av一区| 亚洲精品视频观看| 国产欧美日韩视频在线观看| 91精品国产高清一区二区三区| 国产亚洲福利| 女人天堂亚洲aⅴ在线观看| 狠狠色伊人亚洲综合成人| 亚洲午夜精品网| 国产精品三级av| 日韩一级二级三级精品视频| 久久亚洲欧美| 日韩视频精品在线观看| 91老师片黄在线观看| 激情小说亚洲一区| 偷拍亚洲欧洲综合| 亚洲人成网站在线| 久久久久久电影| 欧美三级韩国三级日本三斤| 久久久7777| 一本色道婷婷久久欧美| 欧美日韩亚洲一区二区三区在线观看| 国产剧情在线观看一区二区| 日韩国产欧美在线观看| 亚洲老妇xxxxxx| 国产精品全国免费观看高清| 欧美精品一区二区三区蜜桃| 欧美猛男超大videosgay| 色哟哟在线观看一区二区三区| 国产精品亚洲综合| 亚洲欧洲精品一区| 一区三区视频| 国内外成人免费视频| 色综合天天综合网天天看片| 国产精品77777竹菊影视小说| 美腿丝袜亚洲综合| 日韩黄色在线观看| 亚洲电影你懂得| 亚洲综合色丁香婷婷六月图片| 国产精品欧美一区喷水| 国产亚洲成年网址在线观看| 欧美mv日韩mv| 日韩欧美国产wwwww| 欧美一区二区黄| 91精品婷婷国产综合久久性色| 欧美精选一区二区| 7777精品伊人久久久大香线蕉最新版 | 成人一级片在线观看| 国产福利精品一区二区| 国产麻豆视频精品| 国产一区二区三区在线观看免费视频| 久久成人久久鬼色| 国产在线精品免费| 国产一区欧美一区| 国产精品18久久久久久vr| 国产精品香蕉一区二区三区| 国产精品1区2区3区在线观看| 国产精品77777竹菊影视小说| 国产精品一区二区91| 国产福利精品导航| 成人午夜av在线| 风间由美一区二区三区在线观看 | 欧美精品一区二| 国产偷国产偷亚洲高清人白洁| 久久久青草青青国产亚洲免观| 久久久久高清精品| 欧美激情一区二区三区四区| 成人免费在线视频| 亚洲伦理在线精品| 亚洲小说欧美激情另类| 午夜欧美电影在线观看| 日本麻豆一区二区三区视频| 精品在线视频一区| 国产激情视频一区二区在线观看| 成人av影视在线观看| 欧美日韩一区在线视频| 亚洲理伦在线|