摘要:注意申明的權重函數的形參申明聲明聲明也就之前提高的變量提升第部分執行先執行,再執行兩個,再執行函數表達式申明,及執行。
一段代碼看出JS的的解析到執行的順序規則 代碼
function bar(a, b) { b = 3; var b; function b(){} console.log(a); // 打印出:10 console.log(b); // 打印出:3 return function a(){}; } bar(10);執行順序 函數外面的時候,代碼拆成前后兩部分來看: 第 1 部分:(申明)
1、申明了一個bar=undefined的函數變量,用代碼可以看成:(VO是執行上下文,可以看成是this
)
VO = {bar:undefined}第 2 部分:(執行)
2、執行bar(10)這里由于是函數,存在獨立作用域,只要存在作用域就先解析,所以這里又可以拆成兩部分來看:
先聲明a=10,b=undefined兩個形參變量,再申明函數變量b=function b(){},由于上下文VO1中已經存在 b 了,所以會覆蓋掉形參b的申明,然后再申明var變量b=undefined,并覆蓋已經存在VO1中函數變量b,用代碼表示:
VO1 = {a:10,b:undefined}
注意:這里需要注意的是函數表達式return function a(){}并不會提前申明,函數表達式和函數申明的異同是,除了標準的函數申明:function a(){},其他的都是函數表達式,如:var a = function (){}、(function a(){})...等。
注意:申明的權重:argument(函數的形參申明) > function聲明 > var聲明 (也就之前提高的變量提升Hoisting)
先執行b=3,再執行兩個console.log,再執行:函數表達式申明,及執行。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92108.html
摘要:并發編程關鍵字解析解析概覽內存模型的相關概念并發編程中的三個概念內存模型深入剖析關鍵字使用關鍵字的場景內存模型的相關概念緩存一致性問題。事實上,這個規則是用來保證程序在單線程中執行結果的正確性,但無法保證程序在多線程中執行的正確性。 Java并發編程:volatile關鍵字解析 1、解析概覽 內存模型的相關概念 并發編程中的三個概念 Java內存模型 深入剖析volatile關鍵字 ...
摘要:自定義規則校驗代碼業務邏輯是社區中主流的工具,提供的大量規則有效的保障了許多項目的代碼質量。本文將介紹如何通過自定義檢查規則,校驗項目中特有的一些業務邏輯,如特殊作用域特殊使用規范性等。 自定義 eslint 規則校驗代碼業務邏輯 eslint 是 JavaScript 社區中主流的 lint 工具,提供的大量規則有效的保障了許多項目的代碼質量。本文將介紹如何通過自定義 eslint ...
摘要:現實中是這樣的執行結果為結果告訴我們,是單線程沒錯,不過不是逐行同步執行。搜索了很多官方個人博客得到了一堆詞引擎主線程事件表事件隊列宏任務微任務,徹底懵逼。。。以此規則不停的執行下去就是我們所聽到的事件循環。 都知道javascript是單線程,那么問題來了,既然是單線程順序執行,那怎么做到異步的呢? 我們理解的單線程應該是這樣的,排著一個個來,是同步執行。 showImg(https...
摘要:全局變量局部變量全局函數一段也是一塊域。此時打印的自然是,要記住相當于,所以這時候改變的是局部變量,并沒有影響到全局變量,所以第二次打印的依然是。 在熟悉了瀏覽器的工作原理之后,今天我們來講講瀏覽器在從服務器獲取到網頁文件之后是如何解析的。了解了這個基礎知識,對敲出來的代碼,質量會有不小的提升。 一、瀏覽器如何解析html html文件在沒有寫入html標簽之前和txt文本是一個性質的...
閱讀 2082·2021-11-24 09:39
閱讀 1536·2021-10-11 10:59
閱讀 2489·2021-09-24 10:28
閱讀 3368·2021-09-08 09:45
閱讀 1263·2021-09-07 10:06
閱讀 1657·2019-08-30 15:53
閱讀 2056·2019-08-30 15:53
閱讀 1411·2019-08-30 15:53