成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

一段代碼看出JS的的解析到執(zhí)行的順序規(guī)則

Blackjun / 457人閱讀

摘要:注意申明的權(quán)重函數(shù)的形參申明聲明聲明也就之前提高的變量提升第部分執(zhí)行先執(zhí)行,再執(zhí)行兩個(gè),再執(zhí)行函數(shù)表達(dá)式申明,及執(zhí)行。

一段代碼看出JS的的解析到執(zhí)行的順序規(guī)則 代碼
function bar(a, b) {
    b = 3;
    var b;
    function b(){}
    console.log(a); // 打印出:10
    console.log(b); // 打印出:3
    return function a(){};
}

bar(10);
執(zhí)行順序 函數(shù)外面的時(shí)候,代碼拆成前后兩部分來看: 第 1 部分:(申明)

1、申明了一個(gè)bar=undefined的函數(shù)變量,用代碼可以看成:(VO是執(zhí)行上下文,可以看成是this

VO = {bar:undefined}
第 2 部分:(執(zhí)行)

2、執(zhí)行bar(10)這里由于是函數(shù),存在獨(dú)立作用域,只要存在作用域就先解析,所以這里又可以拆成兩部分來看:

第 2.1 部分:(申明)

先聲明a=10,b=undefined兩個(gè)形參變量,再申明函數(shù)變量b=function b(){},由于上下文VO1中已經(jīng)存在 b 了,所以會(huì)覆蓋掉形參b的申明,然后再申明var變量b=undefined,并覆蓋已經(jīng)存在VO1中函數(shù)變量b,用代碼表示:

VO1 = {a:10,b:undefined}

注意:這里需要注意的是函數(shù)表達(dá)式return function a(){}并不會(huì)提前申明,函數(shù)表達(dá)式函數(shù)申明的異同是,除了標(biāo)準(zhǔn)的函數(shù)申明function a(){},其他的都是函數(shù)表達(dá)式,如:var a = function (){}、(function a(){})...等。
注意:申明的權(quán)重:argument(函數(shù)的形參申明) > function聲明 > var聲明 (也就之前提高的變量提升Hoisting)

第 2.2 部分:(執(zhí)行)

先執(zhí)行b=3,再執(zhí)行兩個(gè)console.log,再執(zhí)行:函數(shù)表達(dá)式申明,及執(zhí)行。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92108.html

相關(guān)文章

  • Java并發(fā)編程:從根源上解析volatile關(guān)鍵字實(shí)現(xiàn)

    摘要:并發(fā)編程關(guān)鍵字解析解析概覽內(nèi)存模型的相關(guān)概念并發(fā)編程中的三個(gè)概念內(nèi)存模型深入剖析關(guān)鍵字使用關(guān)鍵字的場(chǎng)景內(nèi)存模型的相關(guān)概念緩存一致性問題。事實(shí)上,這個(gè)規(guī)則是用來保證程序在單線程中執(zhí)行結(jié)果的正確性,但無(wú)法保證程序在多線程中執(zhí)行的正確性。 Java并發(fā)編程:volatile關(guān)鍵字解析 1、解析概覽 內(nèi)存模型的相關(guān)概念 并發(fā)編程中的三個(gè)概念 Java內(nèi)存模型 深入剖析volatile關(guān)鍵字 ...

    CNZPH 評(píng)論0 收藏0
  • 前端代碼質(zhì)量進(jìn)階:自定義 eslint 規(guī)則校驗(yàn)業(yè)務(wù)邏輯

    摘要:自定義規(guī)則校驗(yàn)代碼業(yè)務(wù)邏輯是社區(qū)中主流的工具,提供的大量規(guī)則有效的保障了許多項(xiàng)目的代碼質(zhì)量。本文將介紹如何通過自定義檢查規(guī)則,校驗(yàn)項(xiàng)目中特有的一些業(yè)務(wù)邏輯,如特殊作用域特殊使用規(guī)范性等。 自定義 eslint 規(guī)則校驗(yàn)代碼業(yè)務(wù)邏輯 eslint 是 JavaScript 社區(qū)中主流的 lint 工具,提供的大量規(guī)則有效的保障了許多項(xiàng)目的代碼質(zhì)量。本文將介紹如何通過自定義 eslint ...

    Coly 評(píng)論0 收藏0
  • Javascript 事件循環(huán)event loop

    摘要:現(xiàn)實(shí)中是這樣的執(zhí)行結(jié)果為結(jié)果告訴我們,是單線程沒錯(cuò),不過不是逐行同步執(zhí)行。搜索了很多官方個(gè)人博客得到了一堆詞引擎主線程事件表事件隊(duì)列宏任務(wù)微任務(wù),徹底懵逼。。。以此規(guī)則不停的執(zhí)行下去就是我們所聽到的事件循環(huán)。 都知道javascript是單線程,那么問題來了,既然是單線程順序執(zhí)行,那怎么做到異步的呢? 我們理解的單線程應(yīng)該是這樣的,排著一個(gè)個(gè)來,是同步執(zhí)行。 showImg(https...

    Miyang 評(píng)論0 收藏0
  • 優(yōu)化關(guān)鍵渲染路徑

    摘要:三種渲染流程實(shí)際場(chǎng)景下,大概會(huì)有三種常見的渲染流程注意和步驟是可避免的優(yōu)化瀏覽器會(huì)在和加載完開始渲染頁(yè)面。優(yōu)化避免阻塞解析器通過以上兩種方式引入均會(huì)阻塞,因而會(huì)阻塞出現(xiàn)在腳本后面的標(biāo)記的渲染。 瀏覽器渲染原理 showImg(https://segmentfault.com/img/remote/1460000009159494?w=538&h=507);showImg(https:/...

    Integ 評(píng)論0 收藏0
  • 瀏覽器如何解析html、css、js

    摘要:全局變量局部變量全局函數(shù)一段也是一塊域。此時(shí)打印的自然是,要記住相當(dāng)于,所以這時(shí)候改變的是局部變量,并沒有影響到全局變量,所以第二次打印的依然是。 在熟悉了瀏覽器的工作原理之后,今天我們來講講瀏覽器在從服務(wù)器獲取到網(wǎng)頁(yè)文件之后是如何解析的。了解了這個(gè)基礎(chǔ)知識(shí),對(duì)敲出來的代碼,質(zhì)量會(huì)有不小的提升。 一、瀏覽器如何解析html html文件在沒有寫入html標(biāo)簽之前和txt文本是一個(gè)性質(zhì)的...

    Awbeci 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<