<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        理清JS中的詞法、靜態、動態、函數、塊作用域

        來源:懂視網 責編:小采 時間:2020-11-27 20:24:39
        文檔

        理清JS中的詞法、靜態、動態、函數、塊作用域

        理清JS中的詞法、靜態、動態、函數、塊作用域:呃剛剛寫了好多,結果被我誤操作覆蓋掉了,我的心血 ╥﹏╥… 沒關系重新寫一遍,也提醒同樣在這個平臺寫博客并且像我一樣喜歡使用markdown語言碼字的同學 保存線上到草稿是一個好習慣,嗯嗯 今天雙十一,感覺該剁手了。很多同學在學習JavaScrip
        推薦度:
        導讀理清JS中的詞法、靜態、動態、函數、塊作用域:呃剛剛寫了好多,結果被我誤操作覆蓋掉了,我的心血 ╥﹏╥… 沒關系重新寫一遍,也提醒同樣在這個平臺寫博客并且像我一樣喜歡使用markdown語言碼字的同學 保存線上到草稿是一個好習慣,嗯嗯 今天雙十一,感覺該剁手了。很多同學在學習JavaScrip

        這兩本書都是很新的書,并且都是非常權威的書,強力推薦
        特別是《你不知道的JavaScript》系列,上個月中卷剛出的時候我就迫不及待從網上買了一本
        果然沒讓我失望
        咳咳扯遠了,回到正題
        我想原書的作者大神們,對于動態作用域的理解不一樣
        所以才會造成這看似矛盾的觀點
        在這里我想談談我的立場
        通過我理解的,我也認為JavaScript中沒有動態作用域
        關于靜態、動態作用域有什么區別
        往下看↓

        詞法作用域與動態作用域

        我先上一段代碼

        function foo(){
         var a = 1;
         bar();
        }function bar(){
         console.log(a);
        }var a = 100;
        foo();

        通過我們對預編譯、作用域的深入理解
        在我們JavaScript的詞法作用域中最后結果打印100

        但是如果我們的作用域是動態作用域的話,打印的就變成了1
        這是為什么呢?
        詞法作用域最重要的特點就是它的定義過程發生在書寫階段(如果沒有使用eval()和with)
        動態作用域使作用域在運行時被動態的確定

        詞法作用域關心函數在何處聲明,作用域鏈基于作用域嵌套
        動態作用域關心函數在何處調用,作用域鏈基于調用棧

        我把上面的話翻譯到代碼上就是
        詞法作用域:因為bar函數是在全局聲明的,所以我輸出全局的變量a的值
        動態作用域:因為bar函數是在foo函數內調用的,所以我輸出foo內的變量a的值
        這就是我的理解

        我現在接觸過的程序語言有限,全部都是詞法作用域,我還沒見過基于動態作用域的語言
        C、C++、C#、Java、JavaScript、php這些都是詞法作用域
        其中JavaScript和php基于函數作用域,其他的基于塊作用域

        函數作用域與塊作用域

        在我的理解中
        函數作用域就是函數代碼塊產生作用域,塊作用域就是大括號代碼塊產生作用域
        看到很多博客中是這么寫的,JavaScript中只有函數作用域(大錯特錯)
        這是完全不正確的,沒有爭議
        JavaScript確實是基于函數作用域的,但不代表我們沒有塊作用域
        特例還真不少,有with關鍵字、try-catch語句的catch子句、let關鍵字(ES6)、const關鍵字(ES6)
        這里我只是簡單的說一下
        關鍵字with和catch子句都可以產生塊作用域
        這一點我在一篇文章中寫的應該是很詳細了
        感興趣的同許多可以去看看
        傳送門 –>JavaScript欺騙詞法的eval、with與catch及其性能問題

        let關鍵字和var很像,都是聲明變量的,不過let關鍵字可以將變量綁定到所在的任意作用域中
        而且使用let進行聲明不會在塊作用域中進行提升
        const關鍵字同樣是聲明變量,不過它聲明的是常量,同樣綁定變量到塊作用域
        這簡直和我們在C/C++的const關鍵字一樣
        關于更多的我以后寫到ES6的知識時再詳細說吧
        現在我們只需要知道“JavaScript中是有塊作用域的”就可以了

        總結

        像平時一樣,給大家總結一下

      1. 作用域工作模式:詞法/靜態作用域,動態作用域

      2. 詞法作用域:函數作用域、塊作用域

      3. JavaScript沒有動態作用域

      4. JavaScript有塊作用域

      5. with、catch子句、let(ES6)、const(ES6)產生塊作用域

      6. 詞法作用域關心函數在何處聲明

      7. 動態作用域關心函數在何處調用

      8. 詞法作用域作用域鏈基于作用域嵌套

      9. 動態作用域作用域鏈基于調用棧

      10. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        理清JS中的詞法、靜態、動態、函數、塊作用域

        理清JS中的詞法、靜態、動態、函數、塊作用域:呃剛剛寫了好多,結果被我誤操作覆蓋掉了,我的心血 ╥﹏╥… 沒關系重新寫一遍,也提醒同樣在這個平臺寫博客并且像我一樣喜歡使用markdown語言碼字的同學 保存線上到草稿是一個好習慣,嗯嗯 今天雙十一,感覺該剁手了。很多同學在學習JavaScrip
        推薦度:
        標簽: 動態 js 靜態
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 蜜桃成人无码区免费视频网站| 国产亚洲精aa成人网站| 77777_亚洲午夜久久多人| a成人毛片免费观看| 皇色在线视频免费网站| 亚洲精品偷拍视频免费观看| 黄色三级三级免费看| 国产一级高清免费观看| 黄页网址大全免费观看12网站| 日本zzzzwww大片免费| 亚洲精品视频久久久| 亚洲av无码一区二区三区观看| 男女一进一出抽搐免费视频| 亚洲人成网77777色在线播放| 亚洲精品伦理熟女国产一区二区| 久久成人a毛片免费观看网站| 国产成人精品免费直播| 青娱乐在线视频免费观看| 亚洲精品麻豆av| 外国成人网在线观看免费视频| 久久精品国产精品亚洲艾草网美妙 | 亚洲香蕉在线观看| 青青操视频在线免费观看| 亚洲国产成人久久精品动漫| 久久WWW免费人成—看片| 国产一区在线观看免费| a一级毛片免费高清在线| 18亚洲男同志videos网站| 麻豆国产精品入口免费观看| 亚洲制服丝袜精品久久| 国产免费私拍一区二区三区| 国产三级在线免费| 2020国产精品亚洲综合网| 无码国产精品一区二区免费vr| 国内精品久久久久久久亚洲| 24小时在线免费视频| 亚洲国产精品无码第一区二区三区 | 岛国av无码免费无禁网站| 欧洲精品码一区二区三区免费看| 日韩免费观看视频| 亚洲AV无码一区二区三区网址|