成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

es6有閉包嗎

es6有閉包。在es6中,在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),把內(nèi)嵌的函數(shù)稱為閉包,它可以訪問(wèn)外部函數(shù)的局部變量;簡(jiǎn)單來(lái)說(shuō),閉包指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中變量的函數(shù)。閉包的主要作用:延伸了變量的作用范圍。由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問(wèn)題,在IE中可能導(dǎo)致內(nèi)存泄露。

es6有閉包嗎

前端(vue)入門到精通課程:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

一、變量作用域

變量根據(jù)作用域的不同分為兩種:全局變量和局部變量。

  • 函數(shù)內(nèi)部可以使用全局變量。

  • 函數(shù)外部不可以使用局部變量。

  • 當(dāng)函數(shù)執(zhí)行完畢,本作用域內(nèi)的局部變量會(huì)銷毀。

二、什么是閉包?

在es6中,閉包(closure)指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中變量的函數(shù)。簡(jiǎn)單理解:一個(gè)作用域可以訪問(wèn)另外一個(gè)函數(shù)內(nèi)部的局部變量。

閉包:在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),把內(nèi)嵌的函數(shù)稱為閉包,它可以訪問(wèn)外部函數(shù)的局部變量

	// fun 這個(gè)函數(shù)作用域 訪問(wèn)了另外一個(gè)函數(shù) fn 里面的局部變量 num     function fn(){         let num = 10         function fun(){             console.log(num)         }         fun()     }     fn() //10
登錄后復(fù)制

閉包的主要作用:延伸了變量的作用范圍。

	// fn 外面的作用域可以訪問(wèn)fn 內(nèi)部的局部變量     function fn(){         let num = 10         // 方法一: 先定義再返回函數(shù)         function fun(){             console.log(num)         }         return fun //返回 fun函數(shù)     }     let f = fn()     f() //10
登錄后復(fù)制

	// fn 外面的作用域可以訪問(wèn)fn 內(nèi)部的局部變量     function fn(){         let num = 10         // 方法二: 直接返回函數(shù)         return function(){             console.log(num)         }     }     let f = fn()     f() //10
登錄后復(fù)制

三、閉包的使用場(chǎng)景

(1)用來(lái)返回值

//以閉包的形式將 name 返回 function fun(){     let name = 'woniu'      //定義閉包     return function f1(){         return name     } }  let ft = fun() //因?yàn)閒un函數(shù)的返回值是f1函數(shù),ft實(shí)質(zhì)是一個(gè)函數(shù)  let na = ft()  //調(diào)用ft函數(shù),實(shí)際調(diào)用的就是f1函數(shù) console.log(na); //woniu
登錄后復(fù)制

(2)函數(shù)賦值:在函數(shù)內(nèi)部定義函數(shù)表達(dá)式

var f2 function fn(){     let name = '曹操'     f2 = function(){ //閉包,將外部函數(shù)的name變量作為閉包的返回值         return name     } } fn() //必須先調(diào)用fn函數(shù),否則f2不是一個(gè)函數(shù) console.log(f2());  //曹操
登錄后復(fù)制

(3)把閉包作為函數(shù)的參數(shù)

function fn(){     let name = '蝸牛學(xué)苑'      //定義閉包     return function callback(){         return name     } }  let f1 = fn() //將fn函數(shù)的返回值callback賦給f1 function f2(temp){     console.log(temp()) //輸出temp函數(shù)的返回值,實(shí)際調(diào)用了閉包c(diǎn)allback } //調(diào)用f2函數(shù):將f1作為實(shí)參傳遞給temp f2(f1)
登錄后復(fù)制

(4)立即執(zhí)行函數(shù)中使用閉包

//立即執(zhí)行函數(shù) (function(){     let name = '蝸牛學(xué)苑'     let f1 = function(){         return name     }      fn2(f1) //調(diào)用fn2函數(shù),將閉包f1作為實(shí)參傳遞給fn2函數(shù) })()  function fn2(temp){  //temp是一個(gè)形參,接收f(shuō)1     console.log(temp()); //對(duì)temp的調(diào)用,實(shí)際調(diào)用的是閉包f1 }
登錄后復(fù)制

(5)循環(huán)賦值

(function(){     for (let i = 1; i <= 10; i++) {         (             function(j){                 setTimeout(function(){                     console.log(j);                 },j*1000)             }         )(i)     } })()
登錄后復(fù)制

(6)將閉包封裝到對(duì)象中

function fun(){     let name = '蝸牛學(xué)苑'     setName = function(na){ //setName是閉包,用來(lái)設(shè)置外部函數(shù)的變量值         name = na     }     getName = function(){ //getName是閉包,用來(lái)返回外部函數(shù)的變量值         return name      }      //外部fun函數(shù)的返回值,將閉包封裝到對(duì)象中返回     return {         setUserName:setName,         getUserName:getName     } } let obj =fun() //將fun函數(shù)返回值(對(duì)象)賦給obj console.log('用戶名:',obj.getUserName()) //蝸牛學(xué)苑 obj.setUserName('石油學(xué)苑') console.log('用戶名:',obj.getUserName()) //石油學(xué)苑
登錄后復(fù)制

(7)通過(guò)閉包實(shí)現(xiàn)迭代

let arr = ['aa','bb','cc'] function fn(temp){ //外部函數(shù)的返回值是閉包     let i = 0     //定義閉包:迭代獲取數(shù)組元素并返回     return function(){         return temp[i++] || '數(shù)組已經(jīng)遍歷結(jié)束'     } }  let f1 = fn(arr) console.log(f1()) //aa console.log(f1()) //bb console.log(f1()) //cc console.log(f1()) //數(shù)組已經(jīng)遍歷結(jié)束
登錄后復(fù)制

(8)、首次區(qū)分(相同的參數(shù),函數(shù)不會(huì)重復(fù)執(zhí)行)

var fn = (function(){     var arr = [] //用來(lái)緩存的數(shù)組     return function(val){         if(arr.indexOf(val) == -1){ //緩存中沒(méi)有則表示需要執(zhí)行             arr.push(val) //將參數(shù)push到緩存數(shù)組中             console.log('函數(shù)被執(zhí)行了',arr);  //這里寫(xiě)想要執(zhí)行的函數(shù)         } else {             console.log('此次函數(shù)不需要執(zhí)行');         }         console.log('函數(shù)調(diào)用完打印一下,方便查看緩存的數(shù)組:',arr);     } })()  fn(10) fn(10) fn(1000) fn(20) fn(1000)
登錄后復(fù)制

注意

(1)搞清除誰(shuí)是閉包函數(shù)

(2)分清楚閉包的返回值、外部函數(shù)的返回值

四、閉包總結(jié)

  • 閉包是什么:閉包是一個(gè)函數(shù)(一個(gè)作用域可以訪問(wèn)另外一個(gè)函數(shù)的局部變量)。

  • 閉包的作用是什么:延伸變量的作用范圍。

沒(méi)有產(chǎn)生閉包,因?yàn)椴](méi)有局部變量,所以訪問(wèn)到的是全局變量 The Window

let name = 'The Window'     let object = {         name: 'My Object',         getNameFunc(){             return function(){                 return this.name             }         }     }     let f = object.getNameFunc()     console.log(f()) //The Window
登錄后復(fù)制

產(chǎn)生了閉包:因?yàn)?this 在函數(shù)內(nèi)部被賦值給了 that,指向的是 object 這個(gè)對(duì)象。

	let name = 'The Window'     let object = {         name: 'My Object',         getNameFunc(){             let that = this             return function(){                return that.name             }         }     }     let f = object.getNameFunc()     console.log(f()) //My Object
登錄后復(fù)制

使用閉包的注意點(diǎn)

1)由于閉包會(huì)使得函數(shù)中的變量都被保存在內(nèi)存中,內(nèi)存消耗很大,所以不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問(wèn)題,在IE中可能導(dǎo)致內(nèi)存泄露。解決方法是,在退出函數(shù)之前,將不使用的局部變量全部刪除。

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

【推薦學(xué)習(xí):javascript視頻教程】

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
国内精品自线在拍大学生| 国产欧美一区二区精品性色| 国产9在线 | 欧洲| 国产精品无码翘臀在线看| 国精品无码一区二区三区在线蜜臀| 激情 小说 亚洲 图片 伦 | 亚洲AV无码国产精品色午夜| 亚洲AV永久无码精品一区二区不 | 新版天堂8中文在线最新版官网| 亚洲AV无码专区在线观看漫画 | 被邻居侵犯性HD中文字幕| 丰满大屁股熟女偷拍内射| 国产女人喷潮视频在线观看| 久久精品99国产AV精品蜜桃| 男生把小j放进女人屁股视频狂躁| 人妻JapanXXXX精品HD| 天天看片天天AV免费观看| 亚洲AV无码专区精品无码| 一区蜜桃中文不卡在线| WWW性久久久COM| 国产精品久久国产精麻豆99网站| 精品无码久久久久国产APP| 内射人妻无码色AV| 四季亚洲精品成人AV无码网站| 亚洲VA在线VA天堂VA不卡| 中国少妇内射XXXXⅩHD| 从厨房到餐桌JOYCE| 国产亚洲欧洲AⅤ综合一区| 老师扒开粉嫩粉嫩的泬| 日韩一区二区高清视频| 亚洲国产成人久久综合同性| 99精品久久久久久久婷婷| 色偷偷色噜噜狠狠成人免费视频| 无线乱码A区B区C区D| 在线观看无码AV网站永久| 成熟丰满熟妇AV无码区| 精品第一国产综合精品AⅤ| 尿眼PEEHOLE重口| 无码熟妇人妻AV在线影片免费| 伊人精品久久久久7777 | 中文字幕AV无码免费久久| 高潮好爽视频在线观看| 久久WWW成人_看片免费不卡| 人人妻人人爽人人添少妇| 亚洲AV无码专区国产乱码京东传| 97久久国产亚洲精品超碰热| 国产精品久久久久久久久久久不卡 | 亚洲老熟女 @ TUBEUM TV| Z〇ZOZ〇女人另类ZOZ〇| 狠狠躁夜夜躁无码中文字幕| 热99RE久久精品这里都是精品| 亚洲AV无码专区成人网址| MATUREHDHQ成熟| 精品国产一区二区三区吸毒| 日本精品VIDEOSSEX 黑| 亚洲男人第一无码AV网| 成熟交BGMBGMBGM| 久久香综合精品久久伊人| 久久躁夜夜躁天天躁| 舌L子伦熟妇ΑV| 中文字幕AV高清片| 国产真实老熟女无套内射| 人妻少妇无码专视频在线| 亚洲色欲色欲综合网站| 国产94在线 | 亚洲| 免费午夜爽爽爽WWW视频十八禁| 小妖精又紧又湿高潮H视频69| 99久久亚洲精品无码毛片| 亚洲无码视频一区二区| 亚洲大肥女ASS硕大| 成人无码区免费A∨| 老阿姨哔哩哔哩B站肉片入口6| 婷婷综合缴情亚洲狠狠| AV无码天堂一区二区三区| 精品韩国AV无码一区二区三区| 少妇泬出白浆18P试看| 2023国精产品一二二线免费| 狠狠色噜噜狠狠狠888米奇| 日韩精品人妻系列无码AV东京| 夜间十八款禁用软件APP下载| 国产精品久久久久无码AV | 无码中文字幕AV免费放| でも私はあなたより賢いです意思 | 久久久无码人妻精品无码| 无遮高潮国产免费观看| 爆乳2把你榨干哦在线观看 | GAYⅩXX小奶受GV浪小辉| 久久久WWW成人免费精品| 亚洲 熟 图片 小说 乱 妇| 成年动作片AV免费网站| 你下水好多下水道BD| 亚洲欧美日韩国产精品一区二区| 国产成人AV三级在线观看按摩| 秋霞国产成人精品午夜视频APP| 怡红院A∨人人爰人人爽| 激情欧美日韩一区二区| 无码字幕AV一区二区三区| 9色国产深夜内射| 鲁丝一区二区三区| 亚洲人成人无码www在线观看| 国产麻豆精品乱码一区| 四虎影视APP IOS| 成人亚洲综合AV天堂| 女人18片毛片60分钟中国| 伊在人亚洲香蕉精品区麻豆| 精品一区二区三区免费毛片爱| 亚洲ⅤA中文字幕无码| 国产福利一区二区三区在线视频 | 被义子侵犯的漂亮人妻中字| 女人张开腿让男桶喷水高潮| 在线播放免费人成毛片软件| 精品无码日韩国产不卡AV| 亚洲AV永久无码天堂网| 国产日韩精品一区二区三区在线观 | 亚洲精品无码AⅤ片桃花岛| 国产无遮挡又黄又大又爽| 无码国产精品久久一区免费| 国产超碰人人做人人爽AV大片 | 内射猛交XXXXⅩX最新消息| 中美日韩精品激情无码AV| 邻居少妇很紧毛多水多| 伊人依成久久人综合网| 久久亚洲精品无码GV| 一杆长枪直入两扇门| 久久亚洲春色中文字幕久久久| 一对浑圆的胸乳被揉捏| 老熟妇午夜毛片一区二区三区| 又粗又粗又黄又硬又深色的| 久久夜色精品国产噜噜AV| 中国国语毛片免费观看视频| 理论片午午伦夜理片久久| 真实国产老熟女粗口对白| 蜜桃AV噜噜一区二区三区| 2019国产情侣超清在线| 男女无遮挡猛进猛出免费视频| 99久久99久久免费精品小说| 欧洲少妇色XXXXX欧美美妇 | 狠狠综合久久AV一区二区| 亚洲精品偷拍自综合网| 久久精品国产一区二区三区| 一二三四在线观看免费中文吗| 免费无遮挡色视频网站| XXXX性BBBB欧美| 日韩人妻无码一区二区三区| 国产成人精品亚洲一区| 亚洲A∨精品一区二区三区下载 | 人妻洗澡被强公日日澡| 成人免费无遮挡在线播放| 熟妇人妻精品一区二区三区颏| 国产成人影院一区二区三区| 亚洲A∨无码一区二区三区| 精品亚洲AⅤ无码一区二区三区| 夜夜爽77777妓女免费看| 免费一看一级毛片少妇丰满2| めんたいさんでぃふぇんすっ甘雨| 日韩无矿砖2021中文字幕| 国产精品无码专区在线播放 | 无码成人一区二区三区| 国产做出在线 | 传媒麻豆| 亚洲精品无码成人片在线观看 | 日韩午夜理论免费TV影院| 国产粗语刺激对白ⅩXX| 亚洲VA久久久噜噜噜久久无码| 久久人妻无码中文字幕第一| AV成人片无码夜色AV大胸| 日韩日韩日韩日韩 日韩 日韩| 国产精品拍天天在线| 亚洲欧美VR色区| 男人J桶进女人J无遮挡| 大香伊蕉人在播放2019| 亚洲AV成人一区二区三区| 雷神ちゃんが人気の原因| А√最新版在线天堂| 无码人妻精品一区二区蜜桃天美 | 久久精晶国产99久久6| 97久久精品人人澡人人爽| 少妇丰满爆乳被呻吟进入| 极品白嫩的小少妇| 99精品国产兔费观看久久| 视频一区二区三区日韩| 精品无人区乱码1区2区3区在线| AAA级久久久精品无码片| 无码VR最新无码AV专区| 久久久久夜夜夜精品国产| 宝贝乖女你的奶真大水真多| 性姿势108式大全图解| 免费网站看V片在线18禁| 大陆国语对白国产AV片| 亚洲国产精品国自产拍电影| 欧美日韩国产精品| 国产女人高潮抽搐喷水视频| 中文字幕少妇人妻av护士人妻| 少妇夜夜春夜夜爽试看视频| 精品人妻AV无码一区二区三区| FREE性满足VIDE0SHD| 小受叫床高潮娇喘嗯啊MP3| 男女啪啪无遮挡免费网站| 国产女人天天春夜夜春| 99精品久久久久中文字幕| 亚洲AV蜜乳永久www|