亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

淺談JavaScript中的作用域和閉包問題

2024-05-06 16:22:55
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JavaScript中的作用域和閉包問題,是JS入門學習中的基礎知識,需要的朋友可以參考下

JavaScript的作用域以函數為界,不同的函數擁有相對獨立的作用域。函數內部可以聲明和訪問全局變量,也可以聲明局部變量(使用var關鍵字,函數的參數也是局部變量),但函數外部無法訪問內部的局部變量:

 

 
  1. function test() { 
  2. var a = 0; // 局部變量 
  3. b = 1; // 全局變量 
  4. a = ?, b = ? // a為undefined,b為1 

同名的局部變量會覆蓋全局變量,但本質上它們是兩個獨立的變量,一方發生變化不會影響另一方:

 

 
  1. a = 5; // 函數外a的值為5 
  2. function test() { 
  3. var a = 4; // 函數內a的值為4 
  4. }(); 
  5. a = ? // 函數外a的值仍為5,不受函數影響 

一般而言,函數結束后,對函數內部變量的引用全部結束,函數內的局部變量將被回收,函數的執行環境將被清空,但是,如果以內部函數作為函數的返回結果,情況就會發生變化:

 

 
  1. function test(i) { 
  2. var b = i * i; 
  3. return function() { 
  4. return b--; 
  5. }; 
  6. var a = test(8); 
  7. a(); // 返回值為64, 內部變量b為63 
  8. a(); // 返回值為63, 內部變量b為62 

當以內部函數作為返回值時,因為函數結束后內部變量的引用并未結束,所以函數的局部變量無法回收,函數的執行環境被保留下來,因而形成了閉包效果,可以通過該引用訪問本該被回收的內部變量。

閉包還使得函數的局部變量成為“私有”變量,只能通過返回的內部函數訪問,而無法通過其他任何手段去改變。

因此,閉包可用于維持局部變量和保護變量。

不使用閉包的情況:

 

 
  1. var a = []; // 假設a中包含5個元素 
  2. for (var i = 0, m = a.length; i < m; i++) { 
  3. a[i].onclick = function(e) { 
  4. return 'No. ' + i; 
  5. }; 
  6. // 點擊任何一個元素,返回值都是“No. 5”,因為i最后的值為5 
  7. 使用閉包的情況: 
  8. function test(i) { 
  9. return function(e) { 
  10. return 'No. ' + i; 
  11. }; 
  12. var a = []; // 假設a中包含5個元素 
  13. for (var i = 0, m = a.length; i < m; i++) { 
  14. a[i].onclick = test(i); 
  15. // 使用閉包維持局部變量,點擊元素返回No. 0 ~ No. 4 

閉包帶來便利的同時,也會帶來一些弊端:

1、程序復雜度增加,理解更加困難

2、干擾正常的垃圾回收,復雜的閉包還可能導致內存無法回收而崩潰

3、龐大的閉包往往伴隨著性能問題

因此,閉包宜精簡小巧,而不宜龐大復雜,同時應避免大規模的使用閉包。閉包的出現,本身是語言的一個bug,但是因為它獨特的功能而保留下來。它是一個輔助手段,而不是主要功能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久人成影片一区二区三区| 国产精品一区二区av影院萌芽| 成人两性免费视频| 亚洲视频欧美视频| 77777少妇光屁股久久一区| 亚洲女同性videos| 国产精品青青在线观看爽香蕉| 国产91网红主播在线观看| 欧美激情免费看| 日韩毛片在线看| 视频在线观看一区二区| 亚洲色图第一页| 欧美极品少妇与黑人| 亚洲精品中文字幕av| 亚洲精品白浆高清久久久久久| 成人有码在线视频| 亚洲精品视频在线播放| 综合久久五月天| 国模视频一区二区三区| 精品福利在线看| 久久亚洲精品一区二区| 国产日韩换脸av一区在线观看| 欧美一级淫片aaaaaaa视频| 97不卡在线视频| 精品国产一区二区三区久久久| 国产成人中文字幕| 亚洲成年人影院在线| 色婷婷综合久久久久中文字幕1| 亚洲成人精品视频| 精品无人国产偷自产在线| 国产精品三级网站| 视频在线一区二区| 日韩免费在线观看视频| 欧美日韩在线第一页| 亚洲第一黄色网| 欧美午夜性色大片在线观看| 久久久久久91香蕉国产| 亚洲欧美一区二区三区情侣bbw| 精品人伦一区二区三区蜜桃网站| 精品伊人久久97| 美女撒尿一区二区三区| 国产精品久久久久久久久久新婚| 成人精品在线观看| 久久这里只有精品视频首页| 少妇精69xxtheporn| 日韩在线免费视频观看| 日韩毛片中文字幕| 亚洲成年人在线播放| 欧美高清视频在线观看| 91精品视频播放| 国产日本欧美一区二区三区在线| 欧美日韩国产精品专区| 欧美成人午夜激情视频| 精品久久久国产精品999| 日韩欧美aⅴ综合网站发布| 91精品啪在线观看麻豆免费| 欧美大片免费观看在线观看网站推荐| 91干在线观看| 成人黄色免费网站在线观看| 热久久99这里有精品| 亚洲国产美女久久久久| 国产黑人绿帽在线第一区| 国产精品影院在线观看| 久久影视电视剧免费网站清宫辞电视| 中文字幕国产精品| 91精品国产色综合久久不卡98| 国产精品视频大全| 曰本色欧美视频在线| 97精品国产97久久久久久春色| 欧美性xxxx极品hd欧美风情| 欧美伦理91i| 成人在线视频网| 亚洲人午夜精品| 日韩美女在线观看| 一区二区三区动漫| 亚洲第一区中文99精品| 国产999精品视频| 国产一区二区三区毛片| 美女扒开尿口让男人操亚洲视频网站| 欧美亚洲视频在线看网址| 久久国产精品久久久久久久久久| 国产成人精品免费久久久久| www.精品av.com| 国产福利精品av综合导导航| 国产福利精品视频| 亚洲第一福利在线观看| 精品动漫一区二区三区| 国产日韩欧美影视| 日韩免费观看高清| 2018中文字幕一区二区三区| 色妞在线综合亚洲欧美| 国产精品久久久久77777| 欧美有码在线观看| 中文字幕在线日韩| 亚洲第一区在线观看| 亚洲综合一区二区不卡| 免费99精品国产自在在线| 国产精品大片wwwwww| 欧美日韩国产综合视频在线观看中文| 欧美一区二区大胆人体摄影专业网站| 亚洲www永久成人夜色| 日韩大陆毛片av| 国产一区二区三区精品久久久| 中文字幕在线视频日韩| 国产欧美欧洲在线观看| 青青青国产精品一区二区| 亚洲精品成人av| 91久久嫩草影院一区二区| 欧洲成人性视频| 日韩欧美999| 欧美放荡办公室videos4k| 国产精品日日摸夜夜添夜夜av| 亚洲国产中文字幕在线观看| 国产一区二区三区视频在线观看| 国产自产女人91一区在线观看| 91福利视频在线观看| 中文字幕无线精品亚洲乱码一区| 国产视频精品va久久久久久| 国产成人小视频在线观看| 欧美日韩一区二区免费在线观看| 中文字幕亚洲欧美一区二区三区| 91av在线国产| 亚洲的天堂在线中文字幕| 国产99久久精品一区二区永久免费| 亚洲人午夜色婷婷| 在线日韩欧美视频| 国产精自产拍久久久久久蜜| 日韩中文字幕免费看| 136fldh精品导航福利| 日韩成人激情视频| 欧美色视频日本高清在线观看| 国产精品对白刺激| 日韩va亚洲va欧洲va国产| 欧美电影院免费观看| 欧美成年人视频网站欧美| 91久久国产婷婷一区二区| 九九热精品视频国产| 日韩精品视频免费在线观看| 欧美日韩免费一区| 色老头一区二区三区在线观看| 色播久久人人爽人人爽人人片视av| 26uuu另类亚洲欧美日本老年| 久久男人资源视频| 狠狠躁夜夜躁人人爽超碰91| 色悠悠久久久久| 欧美性受xxx| 国产成人精品久久亚洲高清不卡| 欧美乱大交xxxxx另类电影| 久久露脸国产精品| 亚洲黄页视频免费观看| 日韩精品在线免费播放| 欧美丝袜美女中出在线| 日韩精品视频免费在线观看| 有码中文亚洲精品| 成年无码av片在线| 精品精品国产国产自在线| 91久久综合亚洲鲁鲁五月天| 欧美午夜片欧美片在线观看| 久久久精品亚洲| 狠狠躁夜夜躁久久躁别揉| 日日骚av一区| 国产精品一区二区久久久久| 国产亚洲xxx| 色婷婷av一区二区三区在线观看|