摘要:注意申明的權(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ú)立作用域,只要存在作用域就先解析,所以這里又可以拆成兩部分來看:
先聲明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)
先執(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
摘要:并發(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)鍵字 ...
摘要:自定義規(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 ...
摘要:現(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...
摘要:三種渲染流程實(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:/...
摘要:全局變量局部變量全局函數(shù)一段也是一塊域。此時(shí)打印的自然是,要記住相當(dāng)于,所以這時(shí)候改變的是局部變量,并沒有影響到全局變量,所以第二次打印的依然是。 在熟悉了瀏覽器的工作原理之后,今天我們來講講瀏覽器在從服務(wù)器獲取到網(wǎng)頁(yè)文件之后是如何解析的。了解了這個(gè)基礎(chǔ)知識(shí),對(duì)敲出來的代碼,質(zhì)量會(huì)有不小的提升。 一、瀏覽器如何解析html html文件在沒有寫入html標(biāo)簽之前和txt文本是一個(gè)性質(zhì)的...
閱讀 2099·2021-11-24 09:39
閱讀 1568·2021-10-11 10:59
閱讀 2513·2021-09-24 10:28
閱讀 3387·2021-09-08 09:45
閱讀 1279·2021-09-07 10:06
閱讀 1674·2019-08-30 15:53
閱讀 2070·2019-08-30 15:53
閱讀 1427·2019-08-30 15:53