欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久99精品国产一区二区三区_亚洲免费一区二区_女教师淫辱の教室蜜臀av软件_中文字幕国产一区二区

JS作用域、立即執(zhí)行函數(shù)、閉包

2018-4-25    seo達(dá)人

如果您想訂閱本博客內(nèi)容,每天自動(dòng)發(fā)到您的郵箱中, 請(qǐng)點(diǎn)這里

作用域    

首先先介紹一下作用域等一些基礎(chǔ)概念。

 每個(gè)JavaScript函數(shù)都是一個(gè)對(duì)象,對(duì)象中有些屬性我們可以訪問,但有些不可以,這些屬性僅供JavaScript引擎存取,[[scope]]就是其中一個(gè)。

[[scope]] : 指的就是我們所說的作用域,其中存儲(chǔ)了執(zhí)行期上下文的集合

作用域鏈 : [[scope]] 中所存儲(chǔ)的執(zhí)行期上下文對(duì)象的集合,這個(gè)集合呈鏈?zhǔn)芥溄?,我們把這種鏈接叫做作用域鏈。

運(yùn)行期上下文  : 當(dāng)函數(shù)執(zhí)行時(shí),會(huì)創(chuàng)建一個(gè)稱為執(zhí)行期上下文的內(nèi)部對(duì)象(AO)。一個(gè)執(zhí)行期上下文定義了一個(gè)函數(shù)執(zhí)行的環(huán)境,函數(shù)每次執(zhí)行時(shí)對(duì)應(yīng)的執(zhí)行環(huán)境都是的,所以多次調(diào)用一個(gè)函數(shù)會(huì)導(dǎo)致創(chuàng)建多個(gè)執(zhí)行上下文,當(dāng)函數(shù)執(zhí)行完畢,它所產(chǎn)生的執(zhí)行上下文被銷毀。

查找變量  :從作用域鏈的頂端依次向下查找。

下面舉一些例子:

[html] view plain copy
  1. function a(){  
  2.     function b(){  
  3.         function c(){  
  4.   
  5.         }  
  6.         c();  
  7.     }  
  8.     b();  
  9. }  
  10. a();  
  11.   
  12.   
  13. a defined a.[[scope]] ----> 0 : GO          //a定義的時(shí)候產(chǎn)生GO對(duì)象  
  14. a doing   a.[[scope]] ----> 0 : aAO           //a執(zhí)行的時(shí)候新產(chǎn)生AO對(duì)象  
  15.                             1 : GO  
  16.   
  17. b defined  b.[[scope]] ----> 0 : aAO            //子級(jí)b定義會(huì)繼承父級(jí)a運(yùn)行時(shí)產(chǎn)生的對(duì)象  
  18.                              1 : GO   
  19. b doing    b.[[scope]] ---->  0 : bAO            //子級(jí)b新產(chǎn)生AO對(duì)象  
  20.                               1 : aAO   
  21.                               2 : GO   
  22.                                 
  23. c defined  c.[[scope]] ---->  0 : bAO            //c定義時(shí)會(huì)繼承b運(yùn)行時(shí)產(chǎn)生的屬性  
  24.                               1 : aAO   
  25.                               2 : GO                          
  26. c doing     c.[[scope]] ----> 0 : cAO            //c執(zhí)行時(shí)同時(shí)又產(chǎn)生新的AO  
  27.                               1 ;bAO   
  28.                               2 : aAO   
  29.                               3 : GO   

立即執(zhí)行函數(shù)

之前學(xué)過函數(shù)的定義、函數(shù)表達(dá)式,還有一種函數(shù)叫做立即執(zhí)行函數(shù)。

立即執(zhí)行函數(shù):函數(shù)執(zhí)行過后立即被銷毀。

立即執(zhí)行函數(shù)的官方寫法:

[html] view plain copy
  1. // 立即執(zhí)行函數(shù)的官方寫法  
  2. (function() {} ());  W3C建議此種  
  3. (function() {})();  

針對(duì)初始化功能的函數(shù),可以有參數(shù)。

[html] view plain copy
  1. var num = function (a,b){  
  2.     return a + b;  
  3. }(1,2);  
  4.   
  5. (function abc(){  
  6.     var a = 123;  
  7.     var b = 234;  
  8.     console.log(a+b);  
  9. }())  

只有表達(dá)式才能被執(zhí)行符號(hào)執(zhí)行,能被執(zhí)行符號(hào)執(zhí)行的表達(dá)式,函數(shù)名字會(huì)被自動(dòng)忽略。

[html] view plain copy
  1. function test(){  
  2.     console.log("a");  
  3. }()    會(huì)出現(xiàn)語法解析錯(cuò)誤,因?yàn)槔ㄌ?hào)前面是函數(shù)聲明  
  4.   
  5. (+ function test( ){  
  6.     console.log('a');  
  7. }())                    -------->打印出a  

下面是一道曾阿里面試題

[html] view plain copy
  1. function test(a, b, c, d){  
  2.     console.log(a + b + c + d);  
  3. }(1, 2, 3, 4);  
  4.   
  5. // 不報(bào)錯(cuò)也沒有執(zhí)行        

下面是幾道經(jīng)典的例題,可以參考一下:

[html] view plain copy
  1.   
[html] view plain copy
  1. function test(){  
  2.     var arr = [];  
  3.     for(var i = 0; i < 10; i ++){  
  4.         arr[i] = function (){  
  5.             console.log(i);  
  6.         }  
  7.     }  
  8.     return arr;  
  9. }  
  10. var myArr = test();  
  11. for(var j = 0; j < 10; j++){  
  12.     myArr[j]();  
  13. }    
[html] view plain copy
  1.   
[html] view plain copy
  1. // 輸出:10個(gè)10  

那么采用立即執(zhí)行函數(shù)呢?會(huì)有怎樣的結(jié)果呢?

[html] view plain copy
  1. function test(){  
  2.     var arr = [];  
  3.     for(var i = 0; i < 10; i ++){  
  4.         (function(j){  
  5.             arr[i] = function (){  
  6.             console.log(j + " ");  
  7.         }  
  8.         }(i))  
  9.     }  
  10.     return arr;  
  11. }  
  12. var myArr = test();  
  13. for(var j = 0; j < 10; j++){  
  14.     myArr[j]();  
  15. }   
[html] view plain copy
  1.   
[html] view plain copy
  1. // 輸出結(jié)果  0 1 2 3 4 5 6 7 8 9   

大家可以自行思考一下。

閉包

閉包的現(xiàn)象:當(dāng)內(nèi)部函數(shù)保存到外部時(shí)會(huì)產(chǎn)生閉包。


閉包會(huì)導(dǎo)致原有的作用域鏈不釋放,造成內(nèi)存泄漏

(內(nèi)存泄漏:內(nèi)存占用(比如:手握沙子,握得越緊手里剩得就越少))


閉包觸發(fā)的情況:

    兩個(gè)或多個(gè)函數(shù)互相嵌套,把里面的函數(shù)保存到外部,這樣的情況一定會(huì)產(chǎn)生閉包。從外面還可以調(diào)用里面的函數(shù)。


閉包的作用:

            實(shí)現(xiàn)公有變量

                    eg:函數(shù)累加器

            可以做緩存(存儲(chǔ)結(jié)構(gòu))

                    eg:eater

               可以實(shí)現(xiàn)封裝,屬性私有化

                    eg:person()

                模塊化開發(fā),防止污染全局變量



[html] view plain copy
  1. // 函數(shù)累加器  
  2. function add(){  
  3.     var count = 0;  
  4.     function demo(){  
  5.         count ++;  
  6.         console.log(count);  
  7.     }  
  8.     return demo;  
  9. }  
  10. var counter = add();  
  11. counter();  
  12. counter();  
  13. counter();  
  14. counter();  
  15. counter();  
  16. counter();  
  17.   
  18.   
  19. // eater  
  20. function test(){  
  21.     var food = "apple";  
  22.     var obj = {  
  23.         eatFood : function (){  
  24.             if(food != ""){  
  25.                 console.log("I am eating  " + food);  
  26.                 food = "";  
  27.             }  
  28.             else{  
  29.                 console.log("There is nothing!");  
  30.             }  
  31.         },  
  32.         pushFood : function (myFood){  
  33.             food = myFood;  
  34.         }  
  35.     }  
  36.     return obj;  
  37. }  
  38. var person = test();  
  39. person.eatFood();  
  40. person.eatFood();  
  41. person.pushFood('banana');  
  42. person.eatFood();  

附加一個(gè)逗號(hào)操作符:

        先看前面的表達(dá)式,再看后面的表達(dá)式,把后面表達(dá)式的計(jì)算結(jié)構(gòu)返回

例題:

[html] view plain copy
  1. var f =(  
  2.     function f(){  
  3.         return "1";  
  4.     },  
  5.     function g(){  
  6.         return 2;  
  7.     }  
  8. )();  
  9. console.log(typeof(f));   
  10.   
  11. // -------number  
  12.   
  13. var x = 1;  
  14. if(function f(){}){  
  15.     x += typeof f;  
  16. }  
  17. console.log(x);  
  18. // --------> 1undefined  
  19. 藍(lán)藍(lán)設(shè)計(jì)www.ocunn.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

日歷

鏈接

個(gè)人資料

存檔

国产精品一区二区三| 欧美另类一区| 在线视频毛片| 国产精品成人一区二区艾草| 欧美成人三级在线视频| 深夜视频一区二区| 亚洲第一av网站| av黄色免费在线观看| 伊人影院久久| 91探花福利精品国产自产在线 | 伊人青青综合网站| 日产欧产va高清| 麻豆高清免费国产一区| 麻豆av一区二区| 久久bbxx| 欧美日韩一区二区在线观看| 在线免费观看日韩av| 91精品啪在线观看国产81旧版| 日韩免费av一区二区| 人妻精品一区一区三区蜜桃91 | aaa国产视频| 久久久久国产一区二区三区四区 | 成人午夜福利视频| 亚洲国产精品黑人久久久| 精品欧美一区免费观看α√| 91成人小视频| 久久精品青青大伊人av| 伊人网站在线观看| 91亚洲精品久久久蜜桃网站| 无码粉嫩虎白一线天在线观看| 成人在线不卡| 尤物99国产成人精品视频| 国产精品va无码一区二区三区| 国产精品一区二区你懂的| 日本成人性视频| 日韩不卡视频在线观看| 亚洲视频欧美视频| 在线观看日本网站| 成人av在线影院| 免费看国产曰批40分钟| 亚洲日本va| 国产做受69高潮| 少妇高潮一区二区三区69| 亚洲精品乱码久久久久久久久| 污免费在线观看| 四虎成人精品永久免费av九九| 国产免费一区视频观看免费| 国产香蕉视频在线看| 欧美综合在线视频| 黑人と日本人の交わりビデオ| 久久精品123| 日韩jizzz| 羞羞影院欧美| 日韩在线播放视频| 99在线观看免费| 亚洲欧洲一区二区三区| 潘金莲一级淫片aaaaaaa| 亚洲91久久| 高清视频一区| av在线不卡免费| 亚洲精品网址在线观看| 最近中文字幕av| 国产欧美va欧美不卡在线 | 中文字幕一区二区三| 免费国偷自产拍精品视频| 91精品亚洲| 国产亚洲精品美女久久久m| 爱情岛论坛亚洲品质自拍视频网站| 亚洲国产精品久久| 波多野结衣小视频| 欧美韩国日本一区| 青娱乐精品在线| 欧美精品18| 欧美激情第六页| 成人va天堂| 欧美成人激情视频| 亚洲欧美综合一区二区| 色婷婷精品久久二区二区蜜臀av | 国产69精品久久久久9999| 在线理论视频| 欧美色综合久久| 国产在线观看你懂的| 99re这里只有精品视频首页| 黄色手机在线视频| 小处雏高清一区二区三区| 国内精品久久国产| 女生影院久久| 欧美国产第二页| 深夜福利视频一区| 欧美一区午夜精品| 日韩精品成人免费观看视频| 国产精品美女久久久久久2018| 99久久久无码国产精品性波多 | 国产日韩在线精品av| 91麻豆免费在线视频| 亚洲精品久久久久久久久久久久久| 一区二区视频免费| 一区二区三区在线免费观看| 丰满少妇高潮一区二区| 久久精品二区亚洲w码| av免费观看大全| 日韩av在线播放网址| 精品日本一区二区三区在线观看| 成人免费av电影| 亚洲**2019国产| 91女主播在线观看| 亚洲欧美国产精品专区久久 | 秋霞在线观看一区二区三区| 91精品福利观看| 国产成人福利视频| xvideos国产在线视频| 一区二区三区国产视频| 在线影院自拍| 91精品国产日韩91久久久久久| 无码任你躁久久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 国产一区二区三区四区在线| 成人一区二区视频| 午夜激情影院在线观看| 麻豆成人在线| 久久久久久久中文| 亚洲国产精品日韩专区av有中文| 日韩妆和欧美的一区二区| av日韩精品| 444亚洲人体| 成人看片网页| 国产精品va在线播放| 黑人玩欧美人三根一起进| 欧美成人自拍视频| 爱久久·www| 亚洲午夜激情免费视频| 麻豆电影在线| 精品国产一区a| 亚洲精品国产av| 欧美日韩国产天堂| 亚洲一区 中文字幕| 精品美女久久久久久免费| 国产成人精品av久久| 亚洲欧洲精品成人久久奇米网| 中国1级黄色片| 久久影院视频免费| 久久久久久久久久久国产精品| 国产激情偷乱视频一区二区三区| 午夜视频在线观| 青草av.久久免费一区| www黄色在线| 中文欧美日韩| 欧美 国产 小说 另类| 在线观看日韩av电影| 福利视频免费在线观看| 在线国产一区| 2019日韩中文字幕mv| 亚洲综合五月| 欧美成人精品免费| 午夜精品久久99蜜桃的功能介绍| a级黄色片免费| 91精品一区国产高清在线gif| 91成人在线视频观看| 91麻豆精品国产91久久久平台| 影音欧美亚洲| 色狮一区二区三区四区视频| 强伦女教师2:伦理在线观看| 欧美丰满日韩| 天天做天天躁天天躁| 欧美日韩视频一区二区三区| av无码久久久久久不卡网站| 欧美大片专区| 免费看日本毛片| 99视频一区| 三年中国国语在线播放免费| 日日摸夜夜添夜夜添国产精品| 午夜激情av在线| 麻豆一区二区99久久久久| 在线a免费观看| 国产伦精品一区二区三区在线观看| 最新中文字幕日本| 大白屁股一区二区视频| 国内精品久久99人妻无码| 日韩中文首页| 久久国产色av| 韩国中文字幕在线| 国内精品久久久久久| av福利导福航大全在线| 国产成人免费av电影| 欧美free嫩15| 99视频在线免费观看| 91国内精品白嫩初高生| 欧美国产综合视频| 欧美三级伦理在线| 日韩中文字幕在线不卡| 亚洲第一精品影视| 中文字幕在线观看第三页| 日本成人超碰在线观看| 免费看三级黄色片| 99久久精品一区二区| 东方伊人免费在线观看| 亚洲欧洲一区二区三区| 免费在线观看黄网站| 色欧美乱欧美15图片| 精品国产无码AV| 亚洲激情在线视频| 黄色片在线免费看| 激情小说亚洲一区| 国产精品一区二区你懂得| 国产又大又粗又长| 欧美日韩性视频在线| 中文字幕在线观看免费| 51精品久久久久久久蜜臀| 超碰在线人人| 中文字幕视频在线免费欧美日韩综合在线看 | 国产免费高清av| 日韩欧美高清视频| a在线观看免费| 亚洲国产成人一区| 国产午夜在线视频| 久久久久久久久久亚洲| 裤袜国产欧美精品一区| 国产不卡一区二区三区在线观看| 婷婷亚洲精品| www.国产在线播放| 日日夜夜免费精品视频| 国产精品无码专区| 国产精品护士白丝一区av| 毛片毛片女人毛片毛片| 欧美二区三区的天堂| 校园春色综合| 欧美丰满少妇xxxxx做受| 久久毛片亚洲| 精品一区二区视频| 91精品综合久久久久久久久久久| 欧美精品一区二区三区免费播放| 国产乱一区二区| 2017亚洲天堂| 久久99精品国产91久久来源 | 人人精品久久| 欧美日韩免费观看一区| 日本电影欧美片| 国产精品二区在线观看| 欧美偷拍综合| 熟女少妇精品一区二区| 成人美女视频在线观看| 国产精品成人免费观看| 欧美综合亚洲图片综合区| 黑料吃瓜在线观看| 欧美情侣性视频| jvid一区二区三区| 三级三级久久三级久久18| 亚洲久久一区| 亚洲天堂美女视频| 亚洲人123区| 国产视频在线免费观看| 永久免费精品影视网站| 咪咪网在线视频| 快播亚洲色图| 亚洲国产裸拍裸体视频在线观看乱了中文| 中文字幕日韩欧美在线| 日韩av中文| 91精品久久久久久久久| 激情婷婷综合| 蜜桃免费在线视频| 久久久青草青青国产亚洲免观| 狠狠人妻久久久久久| 亚洲国产福利在线| 欧美6一10sex性hd| 国产欧美日韩伦理| 欧美激情一区| 国产精品福利导航| 亚洲国产综合色| 中文字幕123| 97国产suv精品一区二区62| 伊人久久亚洲| 男人添女人下部高潮视频在观看| 国产成人在线色| 日本少妇裸体做爰| 精品国免费一区二区三区| 丝袜美女在线观看| 国产一区二区三区高清| 影音先锋中文字幕一区| 白丝女仆被免费网站| 欧美色图在线视频| 男女污污视频在线观看| 国产欧美日韩免费| 成人亚洲一区| 永久免费看片在线观看| 一区二区三区欧美| 午夜影院在线视频| 97在线视频免费观看| 色婷婷狠狠五月综合天色拍| 日本在线观看免费视频| 国产精品人成在线观看免费| www.国产三级| 午夜精品久久久久久久久久久久久| 精品视频在线你懂得| 成人一区二区三| 国产精品天天看| 亚洲精品国产精品乱码不卡| 久久久视频精品| 神马日本精品| 在线一区二区不卡| 亚洲一区二区三区四区不卡| 樱花在线免费观看| 国产精品老牛影院在线观看| 99久久婷婷这里只有精品| 国产精品麻豆入口| 色综合久久综合中文综合网| 国产美女性感在线观看懂色av| 51精品国产人成在线观看| 激情综合中文娱乐网| 欧美性受xxxx黑人| 日韩一区二区三区av| 97蜜桃久久| 亚洲一区二区三区精品视频| 国产精品一区二区三区乱码| 国产又粗又猛又黄视频| 精品国产一区二区三区久久久狼| 亚洲高清在线一区| 成人性视频欧美一区二区三区| 中文字幕在线免费不卡| 绯色av一区| 成人妇女淫片aaaa视频| 亚洲大片av| 国产黄色的视频| 日韩电视剧在线观看免费网站| 国产成人精品一区二三区在线观看| 欧美性潮喷xxxxx免费视频看| 久久毛片高清国产| 蜜桃av中文字幕| 国产精品免费在线免费| 欧美激情1区| 国产亚洲精品久久久久久豆腐| 欧美成人猛片aaaaaaa| 性欧美18一19sex性欧美| 国产玉足脚交久久欧美| 中文字幕电影一区| 91se在线观看| 成人深夜直播免费观看| 99精品久久久| 免费在线一区二区三区| 亚洲香蕉av在线一区二区三区| 色婷婷av一区二区三区之红樱桃| 亚洲色图都市小说| 亚洲精品久久久久久动漫器材一区| 国产v综合ⅴ日韩v欧美大片| 影音先锋日韩在线| 国产白丝一区二区三区| 亚洲精品999| 成人黄色理论片| 岛国av在线免费| 精品久久久久久久大神国产| 快射av在线播放一区| 丝袜足脚交91精品| 成人蜜臀av电影| www.日日夜夜| 国产伦精品一区二区三区精品视频| 亚洲福利精品| 久久综合亚洲色hezyo国产| 这里只有精品久久| 全国精品免费看| 亚洲精品中文字幕在线播放| 欧美一级爆毛片| 国产91欧美| 中文av一区二区三区| 欧美午夜片欧美片在线观看| gogo高清午夜人体在线| 黄色激情在线视频| 亚洲欧美另类久久久精品| www.成人.com| 一区二区三区偷拍| 国产日韩在线不卡| 亚洲日本高清| 久久亚洲高清| 99在线精品观看| 欧美写真视频一区| 精品国产乱码久久久久久久软件 | 欧美mv日韩mv国产网站| 白嫩亚洲一区二区三区| 亚洲一区二区中文字幕在线观看| 欧美性受xxxx黑人xyx性爽| 成人免费看黄| www.天天射.com| 色婷婷久久久综合中文字幕| 在线天堂资源| 亚洲乱码国产一区三区| 色综合久久久久久久| 中文在线免费视频| 中文字幕在线观看第三页| 在线观看成人小视频| 卡通欧美亚洲| www.超碰97.com| 欧美日韩视频第一区| 久久69成人| 绯色av蜜臀vs少妇| 日韩精品一区二区三区三区免费| 人人爱人人干婷婷丁香亚洲| 国产xxxxxxxxx| 精品网站999www| 一本久久青青| 色哟哟一一国产精品| www日韩中文字幕在线看| 99视频精品视频高清免费|