欧美精品在线一区二区三区_亚洲女同精品视频_日韩一区免费_国产欧美久久久精品免费_国产这里只有精品_僵尸再翻生在线观看_久久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ì)m.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è)人資料

存檔

亚洲不卡1区| 中文字幕无人区二| 91高潮精品免费porn| 国产一区二区三区丝袜| 日韩欧美一区二区视频| 在线免费观看日本一区| 亚洲影院久久精品| 亚洲欧美欧美一区二区三区| 91在线视频观看| 国产福利一区二区三区视频| 奇米四色…亚洲| 老牛影视一区二区三区| 亚洲黄色高清| 伊人激情综合| 国产一区久久| 黄色亚洲免费| 亚洲人成无码网站久久99热国产| 茄子视频成人在线观看 | 国产性色一区二区| 9i在线看片成人免费| 国产自产自拍视频在线观看| 日本老师69xxx| 国产小视频国产精品| 亚洲久久久久久久久久久| 欧美成人在线直播| 亚洲成人激情视频| 亚洲激情视频在线| 亚洲视频在线观看免费| 国产一区二区av| 久久精品福利视频| 色综合91久久精品中文字幕 | 中文字幕一区二区三区av| 中文字幕精品一区二区三区精品| 久久九九久久九九| 国产精品国产三级国产有无不卡| 亚洲素人一区二区| 午夜视频一区在线观看| 在线精品亚洲一区二区不卡| 欧美日韩精品三区| 亚洲国产精品久久| 中日韩美女免费视频网站在线观看 | 亚洲激情图片网| 免费成年人视频在线观看| 激情五月婷婷小说| 久久精品国产91精品亚洲| av剧情在线观看| 四虎影院观看视频在线观看| 草草在线视频| 日韩成人在线一区| 超碰97久久国产精品牛牛| 亚洲国产精品嫩草影院久久av| 精品国产乱码久久久久久果冻传媒| 97精品在线| 性8sex亚洲区入口| 国产麻豆精品视频| 久久亚洲一区二区三区明星换脸| 国产精品久久久久久久久免费桃花| 亚洲欧美成aⅴ人在线观看| 欧美日韩国产精品一区| 欧美三级日韩在线| 亚洲人成在线观看网站高清| 久久伊人精品天天| 国产精品国产三级国产专播精品人 | 欧美精品密入口播放| 日本大胆欧美| 老司机精品视频网站| 不卡的av中国片| 亚洲欧洲综合另类| 欧美性猛片aaaaaaa做受| 亚洲国产成人精品电影| 美女性感视频久久久| 国产精品扒开腿做爽爽爽男男 | 欧美久久综合| 国产成人自拍高清视频在线免费播放| 久久九九99视频| 91久久香蕉国产日韩欧美9色| 亚洲国产精品va在线看黑人| 欧美激情18p| 成人欧美一区二区三区黑人免费| 91成人在线视频观看| www.com操| 久久久久人妻一区精品色| 国产精品露脸视频| 韩国中文免费在线视频| 亚洲三级欧美| 成人羞羞网站| 国产精品一区二区在线观看不卡 | 综合视频在线观看| 91 视频免费观看| av成人免费网站| 亚洲乱色熟女一区二区三区| 日本www在线观看视频| 亚瑟国产精品| 亚洲第一网站| 国产精品色一区二区三区| 欧美偷拍一区二区| 欧美另类xxx| 久久久综合亚洲91久久98| 久久精品午夜福利| 黄色片网站在线播放| av中文字幕第一页| 性欧美1819sex性高清大胸| 老司机在线精品视频| 久久国产精品久久w女人spa| 国产精品欧美一区喷水| 欧美成人综合网站| 国产美女直播视频一区| av动漫在线免费观看| 右手影院亚洲欧美| 911美女片黄在线观看游戏| 免费的黄网站在线观看| 高潮按摩久久久久久av免费| 久久资源在线| 亚洲精品国产成人久久av盗摄 | 欧美另类暴力丝袜| 日本一区视频在线| 4438x全国最大成人| 日本高清不卡码| av在线播放网站| 日韩av中文字幕一区| 国产一区激情在线| 欧美日韩综合在线免费观看| 欧美成人中文字幕| 一区二区三区四区欧美| 亚州av综合色区无码一区| 国产乱淫a∨片免费观看| jizz一区二区三区| 中文字幕一区二区精品区| 国产日产欧美精品一区二区三区| 日韩美女视频在线| 亚洲最大成人网色| 一二三级黄色片| 91麻豆一区二区| 筱崎爱全乳无删减在线观看 | 中文字幕毛片| 日韩视频一二区| 精品一区二区三区香蕉蜜桃| 精品视频在线免费| 国产精品www色诱视频| 国产成人a亚洲精v品无码| 久青草免费视频| 欧美极品另类| 欧美激情五月| 亚洲一卡二卡三卡四卡| 国模视频一区二区| 麻豆tv在线播放| 99久久精品国产亚洲| 99福利在线| 国产精品a级| 午夜电影网亚洲视频| 2019中文字幕免费视频| 久久久久狠狠高潮亚洲精品| 国产原创视频在线| 涩涩视频在线| 日韩黄色在线观看| 欧美另类videos死尸| 国产在线精品成人一区二区三区| 午夜免费福利视频在线观看| 一区二区三区亚洲视频| 国产精品蜜月aⅴ在线| 蜜桃视频一区二区三区| 欧美一区日韩一区| 国产二区不卡| 日韩女同一区二区三区 | 久久男人中文字幕资源站| 国产丝袜一区二区三区免费视频| 国产伦精品一区二区三毛| 午夜久久久久久久| 视频国产在线观看| 欧美电影免费| 日韩欧美aaa| 国产日韩精品在线播放| 国产一精品一aⅴ一免费| 中文字幕第5页| 日本在线电影一区二区三区| 一级日本不卡的影视| 日本久久中文字幕| 苍井空张开腿实干12次| 亚洲国产资源| 91精品国产91久久久久久黑人| 亚洲国产视频在线| 国产精品久久久久久久久久东京| 少妇愉情理伦片bd| 一本一道dvd在线观看免费视频| 欧美日韩黑人| 丁香五六月婷婷久久激情| 国产欧美精品在线播放| 亚洲av成人片色在线观看高潮| 色天堂在线视频| 国产综合精品| 欧美美女bb生活片| 日韩国产伦理| 国产精品suv一区| 国产精一区二区| 国产精品二三区| 国产精品久久久久久av下载红粉| 免费看91视频| 自拍视频在线网| 视频一区欧美精品| 亚洲欧美www| 成人中文字幕在线播放| 亚洲女人18毛片水真多| 国产一区二区三区四区大秀| 香蕉久久一区二区不卡无毒影院| 91色在线视频| 在线观看美女av| 亚洲一区二区三区四区| caoporn国产精品| 欧美精品免费在线观看| 午夜激情影院在线观看| gogogo高清在线观看免费完整版| 美女爽到呻吟久久久久| 日韩激情片免费| 免费无码不卡视频在线观看| 手机在线精品视频| 亚洲国产精品一区| 精品丝袜一区二区三区| 国产l精品国产亚洲区久久| 人妻一区二区三区| 亚洲国产精品日韩专区av有中文 | 肉丝美足丝袜一区二区三区四| av小片在线| 久久99精品国产| 欧美激情精品久久久久久黑人| 亚洲熟妇一区二区| 污视频网站在线免费| 911福利视频| 亚洲综合首页| 国产精品高潮呻吟av| 日韩精品社区| 日本道免费精品一区二区三区| 久久久7777| 中文字幕+乱码+中文字幕明步| 亚洲都市激情| 欧美视频一区二| 丰满人妻一区二区三区53号| 成人免费公开视频| 91久久午夜| 色哟哟网站入口亚洲精品| 天天色天天综合网| 在线播放免费av| 国产三级精品三级| 97视频热人人精品| 国产成人自拍偷拍| 一本一本久久a久久综合精品| 精品国产一区二区国模嫣然| 99精品人妻少妇一区二区| 精彩国产在线| 不卡影院免费观看| 国产情人节一区| 9i精品福利一区二区三区| 日韩av专区| 精品一区二区电影| 无套内谢丰满少妇中文字幕| 97在线视频免费观看完整版| 国产精品三级电影| 精品国产中文字幕| 亚洲AV无码精品国产| 99热这里只有成人精品国产| 日韩有码在线视频| 国产无遮挡在线观看| 国内精品麻豆美女在线播放视频| 欧美色老头old∨ideo| 欧美黄色免费影院| 中文字幕伦理免费在线视频| 国产亚洲人成网站| 好吊妞www.84com只有这里才有精品| 中文字幕人妻丝袜乱一区三区| 欧美日韩亚洲国产精品| www.亚洲人.com| 免费一级suv好看的国产网站| 国产午夜精品在线| 国产日韩免费视频| 久久精品国产清高在天天线| 久久久久久九九九| 黄色一级视频免费观看| 日本久久综合| 色悠悠国产精品| 少妇的滋味中文字幕bd| 神马香蕉久久| 亚洲视频在线观看视频| 性欧美丰满熟妇xxxx性仙踪林| 久久免费视频在线观看| 久久久久久18| 好吊日在线视频| 久久不见久久见国语| 精品亚洲一区二区三区在线播放| 日本wwwwwww| 国产一区二区三区国产精品| 91麻豆精品91久久久久久清纯| xxx国产在线观看| 日本免费一区二区三区四区| 色综合久久久久| 欧美大尺度做爰床戏| 成人日韩在线| 日韩一区二区在线免费观看| 国产精品熟女一区二区不卡| 欧美成人福利| 亚洲精品一区二区三区福利 | 免费看黄在线看| 午夜影院免费在线| 亚洲777理论| 日韩一级理论片| 亚洲国产91视频| 欧美精品一区二区久久久| 日本高清www| 成人免费电影网址| 欧美日韩成人免费| 黄色大全在线观看| 激情六月婷婷综合| 国产九色91| 香蕉视频网站在线观看| 亚洲超碰97人人做人人爱| 嫩草影院国产精品| 日韩免费精品| 在线日韩中文字幕| 久久久国产精品人人片| 99国产精品99久久久久久粉嫩| 日本一本a高清免费不卡| 亚洲天堂狠狠干| 岛国精品一区二区| 手机成人av在线| 91超碰在线播放| 欧美一区二区三区白人| 亚洲爆乳无码精品aaa片蜜桃| 国产高清视频在线| 婷婷丁香久久五月婷婷| xxww在线观看| av成人综合| 欧美成人精品xxx| 一本色道久久综合亚洲| 成人黄色av网站在线| 亚洲人久久久| 特黄毛片在线观看| 欧美r级在线观看| 欧美极品视频在线观看| 久久国产精品久久w女人spa| 国产伦一区二区三区色一情| 二区三区在线播放| 在线观看三级视频欧美| 精品无码一区二区三区| 欧美在线资源| 岛国一区二区三区高清视频| 在线视频自拍| 7777精品伊人久久久大香线蕉| 日韩精品电影一区二区三区| 99成人免费视频| 久久精品丝袜高跟鞋| 久久亚洲资源| 亚洲精品91美女久久久久久久| 国产一级生活片| 国产成人av一区二区三区在线| 久久av秘一区二区三区| 国产69精品久久久久按摩| 日韩一区二区三区xxxx| 国产精品特级毛片一区二区三区| 久久日韩精品一区二区五区| 凹凸日日摸日日碰夜夜爽1| 天天躁日日躁狠狠躁欧美巨大小说| 久久青草福利网站| 黄色福利在线观看| 亚洲午夜久久久久久久久电影院 | 99久久精品无码一区二区毛片 | 日韩理论片中文av| av在线免费观看不卡| 欧美激情1区| 久久久久久高清| 最新日韩三级| 久国内精品在线| 在线视频三级| 欧美午夜免费电影| 国产一级片视频| 2020国产精品| 在线一区二区不卡| 欧美人成在线| 日韩不卡av| www.欧美视频| 4p变态网欧美系列| 久草视频视频在线播放| 日韩精品一区二区三区三区免费| 日韩欧美三级在线观看| 久久久蜜桃精品| 伊人久久久久久久久| 日韩视频三区| 精品一区二区三区毛片| 久久影视三级福利片| 国产在线观看精品一区二区三区| 国产三级在线播放| 亚洲全黄一级网站| 狠狠人妻久久久久久综合麻豆| 午夜精品国产更新| 欧美高清视频一区二区三区| 成人精品视频.| 黄色aaaaaa| 久久婷婷亚洲| 久久这里只有精品23| 久久人妻少妇嫩草av蜜桃| 在线播放免费| 欧美高清精品3d| 亚洲无码精品在线播放|