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

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

js閉包的9個使用場景

瀏覽:215日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美天堂亚洲电影院在线观看| 亚洲精品福利电影| 五月天综合网站| 天堂网av成人| 久久中文精品| 国产精品igao视频网网址不卡日韩 | 欧美日韩一区二区三区四区在线观看| 日韩精品欧美大片| 国产欧美一级| 亚洲天堂日韩在线| 国产精品99一区二区三区| 青草av.久久免费一区| аⅴ资源天堂资源库在线| 石原莉奈在线亚洲二区| 亚洲天堂免费电影| 老司机免费视频一区二区| 欧美日韩在线网站| 亚洲人成网77777色在线播放| 麻豆精品在线视频| 国产精品白丝av嫩草影院| 国产欧美欧美| 国产精品黑丝在线播放| 另类av一区二区| 美国三级日本三级久久99| 久久av在线| 亚洲精品亚洲人成在线观看| 伊人网在线播放| 免费在线看一区| 欧美一级专区| 五月综合激情| 亚洲精品亚洲人成在线观看| 日韩和欧美一区二区| 精品视频一区二区三区在线观看| 日韩影片在线观看| 日韩影院在线观看| 午夜精品成人av| 日本在线啊啊| 久久福利一区| 国产一区二区三区精品在线观看| 久久精品国产99| 欧美激情三区| 亚洲免费观看高清完整版在线观| 免费在线成人| 精品视频97| 日韩天堂av| 老牛影视精品| 午夜在线视频观看日韩17c| 国产66精品| 国产精品二区影院| 综合精品一区| 国产色综合网| 国精品产品一区| 精品久久精品| 欧美va天堂| 欧美aa一级| 九九精品调教| 国产精品国产三级国产在线观看| 91精品二区| 欧美日韩午夜| 精品视频一二| 国产精品videosex极品| 国产精品久久观看| 日韩精品一区第一页| 青青在线精品| 免费久久99精品国产| 欧美在线不卡| 亚洲国产一区二区在线观看| 激情五月综合网| 久久亚洲成人| 99精品在线观看| 国产欧美一级| 日韩成人av影视| 欧美日韩中文| 久久精品天堂| 蜜臀91精品一区二区三区| 亚洲激情二区| 日本不卡一区二区| 国产精品久久久久毛片大屁完整版| 日本不卡高清| 国产精品极品国产中出| 亚洲涩涩av| 国产欧美日韩精品一区二区免费| 精品九九在线| 一本大道色婷婷在线| 麻豆精品少妇| 欧美成人精品午夜一区二区| 中文字幕亚洲影视| 日本亚洲欧美天堂免费| 亚洲97av| 久久影院资源站| 日韩成人精品一区二区| 成人午夜在线| 日韩在线第七页| 亚洲欧美高清| 免费亚洲一区| 国产在线不卡| 亚洲激情精品| 男女男精品视频网| 欧美日韩免费看片| 天堂va蜜桃一区二区三区| 国产欧美精品| 女主播福利一区| 激情自拍一区| 国产精品777777在线播放 | 蜜桃视频在线观看一区二区| 欧美天堂一区二区| 99热精品久久| 国产精品白丝av嫩草影院| 丝瓜av网站精品一区二区| 韩国女主播一区二区三区| 香蕉视频成人在线观看| 九九综合在线| 亚洲精品成人一区| 国产成人免费精品| 五月天激情综合网| 日韩av在线免费观看不卡| 麻豆国产一区| 在线午夜精品| 麻豆国产欧美一区二区三区| 久久精品国产www456c0m| 亚洲ab电影| av亚洲免费| 丝袜国产日韩另类美女| 精品国产99| 婷婷综合电影| 亚洲精品大全| 麻豆久久一区二区| 91成人精品视频| 欧美肉体xxxx裸体137大胆| 喷白浆一区二区| 日韩国产专区| 伊人久久亚洲影院| 免费日本视频一区| 欧美国产先锋| 久久香蕉国产| 亚洲精选久久| 精品国产美女a久久9999| 亚洲va中文在线播放免费| 最新日韩欧美| 免费成人av在线播放| 精品视频国内| 99国产成+人+综合+亚洲欧美| 亚洲91精品| 亚洲一级大片| 一区二区三区四区日本视频| 久久人人88| 国产探花一区二区| 黑人精品一区| 日韩av在线播放网址| 肉色欧美久久久久久久免费看 | 国产亚洲一区在线| 99久久亚洲精品蜜臀| 特黄毛片在线观看| 久久免费国产| 不卡一二三区| 亚洲激情久久| 免费看黄色91| 亚洲性色av| 欧美日本不卡| 亚洲精品视频一二三区| 蜜桃tv一区二区三区| 激情欧美丁香| 日韩高清国产一区在线| 亚洲资源网站| 亚洲国产专区校园欧美| 日韩1区2区3区| 日本午夜大片a在线观看| 欧美日韩亚洲一区三区| 久久不卡国产精品一区二区| 日本午夜精品久久久| 国产99精品一区| 亚洲夜间福利| 欧美男人天堂| 91精品福利观看| 日韩va亚洲va欧美va久久| 黑丝一区二区| 岛国av免费在线观看| 国产精品亚洲综合久久| 久久精品 人人爱| 欧美欧美黄在线二区| 国产精品porn| 日韩一区二区三区精品视频第3页| 婷婷亚洲综合| 欧美欧美黄在线二区| 国产精品s色| 久久国产日本精品| 国产精品扒开腿做爽爽爽软件| 亚洲精品欧美| 在线成人动漫av| 日韩av二区| 午夜宅男久久久| 亚洲特级毛片| 伊人久久国产| 久久av超碰| 韩国久久久久久| 亚洲欧洲专区| 视频一区视频二区在线观看| 久久中文字幕av| 亚洲国产一区二区在线观看| 久久国产精品久久久久久电车 |