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

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

js閉包的9個使用場景

瀏覽:220日期: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久久,三上悠亚国产精品一区二区三区
91久久中文| 911亚洲精品| 精品免费av| 免费在线成人| 欧美a一区二区| 美女视频网站久久| 国产精品久久久亚洲一区| 伊人久久一区| 日韩高清在线不卡| 国产欧美视频在线| 国产精品男女| 国产欧美丝祙| 国产一区二区视频在线看| 精品久久一区| 久久久久久网| 97精品视频在线看| 亚洲精品一级二级| 亚洲天堂久久| 免费视频久久| 日韩网站中文字幕| 九一精品国产| 亚洲资源在线| 中文字幕一区二区精品区| 亚洲+小说+欧美+激情+另类| 国产欧美一区二区三区米奇| 国产黄色精品| 播放一区二区| 亚洲综合日韩| 欧美亚洲一级| 欧美www视频在线观看| 国产精品99一区二区| 久久国产精品99国产| 欧美一级二区| 日韩中文首页| 视频一区二区三区中文字幕| 欧美久久一区二区三区| 日韩一区三区| 欧美日韩国产免费观看视频| 天堂成人免费av电影一区 | 亚洲精品福利| 国产精品成人3p一区二区三区| 精品高清久久| 六月天综合网| 国产欧美一区二区三区国产幕精品| 国产成人1区| 精品一区毛片| 日本精品久久| 电影亚洲精品噜噜在线观看| 九色精品91| 日韩激情一二三区| 国产91在线播放精品| 香蕉国产精品| 91精品国产自产观看在线| 麻豆成人在线观看| 欧美高清不卡| 国产伦理久久久久久妇女| 99久久精品网| 日韩av黄色在线| 欧美日韩精品免费观看视完整| 亚洲一区导航| sm捆绑调教国产免费网站在线观看| 亚洲欧美日韩专区| 国产videos久久| 亚洲欧美日韩精品一区二区| 精品久久久中文字幕| 亚洲理论在线| 日韩欧美自拍| 国产亚洲久久| 另类激情亚洲| 日本不卡免费高清视频在线| 一区二区国产在线| 91嫩草亚洲精品| 亚洲日本欧美| 米奇777超碰欧美日韩亚洲| 国产精品香蕉| 三级欧美韩日大片在线看| 日韩理论视频| 国产香蕉精品| 99pao成人国产永久免费视频 | 色爱综合网欧美| 天堂久久av| 黄色日韩精品| 日韩1区2区| 国产乱人伦精品一区| 免费成人在线影院| 欧美a级一区| yellow在线观看网址| 日本99精品| 亚洲中午字幕| caoporn视频在线| 国产精品一区二区精品 | 亚洲日本免费电影| 在线日韩一区| 国产精品13p| 久久久久伊人| 国产精品久久久亚洲一区| 亚洲tv在线| 首页欧美精品中文字幕| 色网在线免费观看| 精品国产18久久久久久二百| 国产区精品区| 日本久久二区| 国产视频一区免费看| 亚洲福利精品| 狠狠爱成人网| 国产综合精品| 亚洲精品福利电影| 黄色网一区二区| 久久影视三级福利片| 国产伦一区二区三区| 国产私拍福利精品视频二区| 蜜桃av一区二区在线观看| 欧美精品一卡| 婷婷综合社区| 亚洲一级二级| 婷婷国产精品| 欧美日中文字幕| 成人三级高清视频在线看| 欧美成人一二区| 国产一区二区三区不卡av| 精品视频一区二区三区在线观看| 久久99久久久精品欧美| 国产精品入口久久| 国产精品sm| 精品三级久久久| av免费不卡国产观看| 在线中文字幕播放| 国产日韩电影| 1024精品一区二区三区| 狠狠爱成人网| 久久午夜精品| 日本不卡一区二区| 日韩手机在线| 国产欧美午夜| 国产一区二区三区探花| 欧美xxxx中国| 亚洲最新无码中文字幕久久| 欧美日韩视频免费观看| 久久国产主播| 五月婷婷亚洲| 亚洲精品护士| 欧美a在线观看| 日韩欧美一区二区三区在线观看| 99视频精品全部免费在线视频| 欧美精选一区二区三区| 视频一区中文字幕| 国产精品一区二区免费福利视频 | 国产精品亚洲四区在线观看 | 国产精品网址| a国产在线视频| 天堂网在线观看国产精品| 亚洲视频二区| 久久99精品久久久野外观看| 日韩理论视频| 美女久久一区| 欧美日韩va| 国产不卡人人| 视频一区视频二区在线观看| 国产精品久久久久久久久久白浆 | 亚洲高清二区| 综合亚洲视频| 欧美黑人巨大videos精品| 成人在线视频中文字幕| 欧美在线亚洲| 欧美视频二区| 亚洲天堂av影院| 三级在线观看一区二区 | 日韩欧美自拍| 亚洲欧洲免费| 日韩精品不卡一区二区| 国产亚洲精品久久久久婷婷瑜伽| 国产一区 二区| 99视频精品全部免费在线视频| 视频一区中文字幕精品| 精品久久亚洲| 亚洲主播在线| 久久精品国产99国产精品| 一区二区三区四区在线看| 日韩激情啪啪| 久久九九精品| 国产欧美日韩免费观看| 久久精品1区| 欧美精品观看| 欧美日韩国产免费观看| 欧美成人精品一级| 国产精品日韩欧美一区| 另类小说一区二区三区| 激情91久久| 美腿丝袜在线亚洲一区| 欧美精品激情| 久久的色偷偷| 亚洲成人日韩| 精品视频91| 亚洲欧洲免费| 91精品一区国产高清在线gif| 国产欧美三级| 老牛影视一区二区三区| 超碰成人av| 久久精品99国产精品| 一区二区亚洲精品|