JavaScript基礎(chǔ)--變量作用域和預(yù)解析

作用域

  • 在JavaScript中{}外面的作用域, 我們稱之為全局作用域
  • 在JavaScript中函數(shù)后面{}中的的作用域, 我們稱之為"局部作用域"
  • 在ES6中只要{}沒有和函數(shù)結(jié)合在一起, 那么應(yīng)該"塊級作用域"
  • 塊級作用域和局部作用域區(qū)別
    • 在塊級作用域中通過var定義的變量是全局變量
    • 在局部作用域中通過var定義的變量是局部變量
    • 無論是在塊級作用域還是在局部作用域, 省略變量前面的let或者var就會變成一個全局變量
  • 在JavaScript中定義變量有兩種方式
    • ES6之前: var 變量名稱;
    • ES6開始: let 變量名稱;
  • 區(qū)別
    • 通過var定義變量,可以重復(fù)定義同名的變量,并且后定義的會覆蓋先定義的
    • 如果通過let定義變量, "相同作用域內(nèi)"不可以重復(fù)定義同名的變量
    • 通過var定義變量, 可以先使用后定義(預(yù)解析)
    • 通過let定義變量, 不可以先使用再定義(不會預(yù)解析)
    • 無論是var還是let定義在{}外面都是全局變量
    • 將var定義的變量放到一個單獨的{}里面, 還是一個全局變量
    • 將let定義的變量放到一個單獨的{}里面, 是一個局部變量

作用域鏈

  • JavaScript代碼中至少有一個作用域, 即全局作用域奥秆。
  • 凡是代碼中有函數(shù),那么這個函數(shù)就構(gòu)成另一個作用域峦失。
  • 如果函數(shù)中還有函數(shù),那么在這個作用域中就又可以誕生一個作用域。
  • 將這樣的所有的作用域列出來磨取,可以形成的結(jié)構(gòu)就稱之為作用域鏈。
<script>
    var num = 123; // 0級作用域鏈
    function test() { // 0級作用域鏈
        var num = 666; // 1級作用域鏈
        console.log(num);
        function demo() { // 2級作用域鏈
            var num = 777;
            console.log(num);
        }
        demo();
    }
    test();
    console.log(num);
</script>

預(yù)解析

  • JavaScript代碼的執(zhí)行是由瀏覽器中的JavaScript解析器來執(zhí)行的柴墩。
  • JavaScript解析器執(zhí)行JavaScript代碼的時候忙厌,分為兩個過程
    • 預(yù)解析過程
    • 代碼執(zhí)行過程
  • 預(yù)解析過程:
    • 把變量的聲明提升到當(dāng)前作用域的最前面,只會提升聲明江咳,不會提升賦值逢净。
    • 把函數(shù)的聲明提升到當(dāng)前作用域的最前面,只會提升聲明歼指,不會提升調(diào)用爹土。
    • 先提升var,在提升function踩身。
  • 注意點:
    • 變量和函數(shù)同名時, 函數(shù)的優(yōu)先級高
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末胀茵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挟阻,更是在濱河造成了極大的恐慌琼娘,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件附鸽,死亡現(xiàn)場離奇詭異脱拼,居然都是意外死亡,警方通過查閱死者的電腦和手機拒炎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門挪拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挨务,“玉大人击你,你說我怎么就攤上這事玉组。” “怎么了丁侄?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵惯雳,是天一觀的道長。 經(jīng)常有香客問我鸿摇,道長石景,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任拙吉,我火速辦了婚禮潮孽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘筷黔。我一直安慰自己往史,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布佛舱。 她就那樣靜靜地躺著椎例,像睡著了一般。 火紅的嫁衣襯著肌膚如雪请祖。 梳的紋絲不亂的頭發(fā)上订歪,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音肆捕,去河邊找鬼刷晋。 笑死,一個胖子當(dāng)著我的面吹牛福压,可吹牛的內(nèi)容都是我干的掏秩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼荆姆,長吁一口氣:“原來是場噩夢啊……” “哼蒙幻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胆筒,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤邮破,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仆救,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抒和,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年彤蔽,在試婚紗的時候發(fā)現(xiàn)自己被綠了摧莽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡顿痪,死狀恐怖镊辕,靈堂內(nèi)的尸體忽然破棺而出油够,到底是詐尸還是另有隱情,我是刑警寧澤征懈,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布石咬,位于F島的核電站,受9級特大地震影響卖哎,放射性物質(zhì)發(fā)生泄漏鬼悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一亏娜、第九天 我趴在偏房一處隱蔽的房頂上張望焕窝。 院中可真熱鬧,春花似錦维贺、人聲如沸袜啃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽群发。三九已至,卻和暖如春发乔,著一層夾襖步出監(jiān)牢的瞬間熟妓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工栏尚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留起愈,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓译仗,卻偏偏與公主長得像抬虽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纵菌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348