日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第五章 作用域闭包

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第五章 作用域闭包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5.作用域閉包

5.1 啟示

  • function foo(){
  • ? ?var a = 2;
  • ? ?function bar(){
  • ? ? ? ?console.log(a);
  • }
  • ? ?return bar;
  • }
  • var baz = foo();
  • baz(); // 2 閉包的效果
  • // 函數bar在定義時的詞法作用域外被調用。閉包使得它可以繼續訪問定義時的詞法作用域。
  • 閉包實際上只是一個標準--關于如何在函數作為值按需傳遞的此法環境中書寫代碼 ? 當函數可以記住并訪問所在的詞法作用域,即使函數是在當前詞法作用域之外執行,這時就產生了閉包。 ?

    5.2 實質問題

    無論使用何種方式對函數類型的值進行傳遞,當函數在別處調用時都可以觀察到閉包。
  • function foo(){
  • ? ?var a = 2;
  • ? ?function baz(){
  • ? ? ?console.log(a); //2
  • }
  • ? ?bar(baz);
  • }
  • function bar(fn){
  • ? ?fn(); //閉包
  • }
  • 間接調用
  • var fn;
  • ?
  • function foo(){
  • ? ?var a = 2;
  • ? ?function baz(){
  • ? ? ? console.log(a);
  • }
  • ? ?fn = baz; //將baz分配給全局變量
  • }
  • function bar(){
  • ? ?fn();
  • }
  • foo();
  • bar();//2
  • 5.3 I got it

    在定時器、事假監聽器、Ajax請求、跨窗口通信、Web Woekers或者任何其他的異步(或同步)任務中,使用了回調函數就是在使用閉包。 ? IIFE
  • var a = 2;
  • (function IIFE(){
  • ? ?console.log(a);
  • })();
  • 嚴格來說,并不是閉包。IIFE不是在它本身的詞法作用域以外執行的。a是通過普通的詞法作用域查找而非閉包發現的。 但它的確創建了閉包,并且也是最常用來創建可以封閉起來的閉包的工具。 ?

    5.4 循環和閉包

  • for(var i =1; i<=5; i++){
  • ? ?setTimeout(function timer(){
  • ? ? ? ?console.log(i);
  • },i*1000);
  • }
  • 輸出6. ?延遲函數的回調會在循環結束時才執行,即使第二個參數是0,所有的回調函數依然是在循環結束之后才會被執行。 ? 缺陷是:再循環過程中每個迭代都需要一個閉包作用域。要想得到想要的結果--每個一秒輸出一個數字(遞增1)--1~5 ?
  • for(var i =1;i<=5;i++){
  • ? ?(function(){
  • ? ? var j = i;
  • ? ? ? ?setTimeout(function timer(){
  • ? ? ? ? ? ?console.log(j);
  • ? ?},j*1000);
  • })();
  • }
  • 在迭代內使用IIFE會為每個迭代都生成一個新的作用域,使延遲函數的回調可以將新的作用域封閉在每個迭代內部,每個迭代中都會含有一個具有正確值的變量供我們訪問。 ? 塊作用域

    let:用來劫持塊作用域,并且在這個塊作用域中聲明一個變量。

  • for(let i = 1; i<=5; i++){
  • ? ?setTimeout(function(){
  • ? ? ? ?console.log(i);
  • },i*1000);
  • }
  • !!!可以得到想要的效果 1,2,3,4,5 ? 塊作用域和閉包 ?

    5.5 模塊

    模塊模式需要具備兩個必備條件:
  • 必須有外部的封閉函數,該函數必須至少被調用一次(每次調用都會創建一個新的模塊實例)。
  • 封閉函數必須返回至少一個內部函數,這樣內部函數才能在私有作用于中形成閉包,并且可以訪問或者修改 私有的狀態。
  • 一個從函數調用所返回的,只有數據屬性而沒有閉包函數的對象并不是真正的模塊。 ? ? 模塊有兩個主要特征
    • 為創建內部作用域而調用了一個包裝函數
    • 包裝函數的返回值必須至少包括一個對內部函數的引用,這樣就會創建涵蓋整個包裝函數內部作用域的閉包。

    5.5.1 現代的模塊

    大多數模塊依賴加載器/管理器本質上都是將這種模塊定義封裝進一個有好的API里。

    5.5.2 ?未來的模塊

    import可以將一個模塊中的一個或多個API導入到當前作用域中,并分別綁定在一個變量上。 moddle會將整個模塊的API導入并綁定在一個變量上。 export會將當前模塊的一個標識符(變量、函數)導出為公共API ? 模塊文件中的內容會被當做好型包含在作用域閉包中一樣來處理,和函數閉包模塊一樣 ?



    null



    轉載于:https://www.cnblogs.com/Natsume5233/p/6488826.html

    總結

    以上是生活随笔為你收集整理的第五章 作用域闭包的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久色资源网 | av在线免费观看一区 | 韩日黄色片 | 欧美精品偷拍 | 亚洲精品 日韩无码 | 成人免费视频观看 | 欧美少妇性生活 | 亚洲人成电影在线播放 | av大片在线免费观看 | 国产91精品久久久 | 亚洲一二三区av | 午夜肉体高潮免费毛片 | 欧美女同在线 | 亚州男人的天堂 | 国产视频在线一区二区 | 欧美在线网址 | 中文字幕网站在线观看 | 国产成人精品一区二区三区无码熬 | 国产剧情一区 | 日日爽夜夜 | 黄色精品一区 | 成人av在线播放网站 | 亚洲视频免费在线播放 | 99精品中文字幕 | 我要操av| 成人在线免费 | 亚洲中文字幕无码一区二区三区 | 成人性生交视频免费观看 | 国产女主播在线一区二区 | 免费无码国产v片在线观看 三级全黄做爰在线观看 | 久久久久久久久久国产精品 | 天堂在线v | 91文字幕巨乱亚洲香蕉 | 国产绿帽一区二区三区 | 欧美日韩一区视频 | 性色欲网站人妻丰满中文久久不卡 | 99热这里只| 久久视频网 | 黄页网站视频 | 国产女女调教女同 | 免费看污片的网站 | 国产做爰视频免费播放 | 韩国禁欲系高级感电影 | 中国黄色一级大片 | 91精品国产乱码久久久久 | 天天干b | 97国产精品久久久 | 五级 黄 色 片 | 成年人在线观看网站 | 天天射天天干天天 | 男人操女人的免费视频 | 四虎影院在线看 | av2014天堂| 国产富婆一级全黄大片 | 欧美整片在线观看 | 一区二区三区在线观 | 亚洲图片小说视频 | 欧美区一区二区三 | 无码精品人妻一区二区三区湄公河 | 爱爱爱免费视频 | av操操操| av永久网站 | 麻豆视频免费 | 欧美一区二区三区影院 | av老司机在线 | 久久黄色小视频 | 国产粉嫩白浆 | 五月香婷婷| 亚洲影视中文字幕 | 岛国中文字幕 | 欧洲久久久| 日本人妻一区二区三区 | 国内成人精品 | 超清纯大学生白嫩啪啪 | 成人中文字幕+乱码+中文字幕 | 亚洲三级中文字幕 | 国产精品刘玥久久一区 | 日韩黄色免费电影 | 久久蜜桃av | 777午夜 | 99国产精品久久久久久久 | 日批免费网站 | 美女黄色影院 | 在线观看av片 | 亚洲春色另类 | 1024久久| 免费在线观看亚洲 | 浪漫樱花动漫在线观看免费 | 日本黄色免费大片 | 亚洲狠狠婷婷综合久久久久图片 | 天天射日 | 夜夜操操操 | av女大全列表| 婷婷狠狠 | 撸啊撸av | 色又色| 正在播放adn156松下纱荣子 | 色婷婷九月 | 亚洲女同在线 |