js解析順序了解一下??

2022-08-13 23:30:18 字數 1612 閱讀 8671

我們在學習一種新事物的時候,總是知其然,而不知其所然。有些人會**到底,有一些人會得過且過。

好了,開場白結束,直接進入正題。

js不像c語言那樣只要編譯一次之後成.exe檔案之後就不用在編譯可以直接使用了,js是一種解釋型語言,就像你出國旅遊,有乙個人為你翻譯別人的

話一樣,別人說一句,你的翻譯就翻譯一句。js同理 是邊解析邊執行。

js的解析分為兩個階段

1.預解析階段 2.執行階段

1.預解析階段

其實js執行**的時候都i是在執行乙個作用域,而js一共就只有兩個作用域,全域性作用域和函式作用域

在我們開啟程式的一瞬間,全域性作用域裡面的**就執行了,這個時候是和函式作用域雞毛關係都沒有

那麼與解析階段都幹啥了?

這個階段主要做的事 就是變數收集 也可以說宣告提前,用**表達更好的解釋

test();//

帥哥天下9

var a=4;

var b=function()

function

test()

為什麼test方法能執行呢,先執行後定義,還有這種操作??

其實這就得歸公於與解析階段了

他會把變數宣告提前這個變數包括普通變數和函式變數

var a=function()

所以上面的**應該是這樣子滴

var

a;var

b;function

test()

test();

a=4;

b=function

();

所以這就解釋了為什麼可以先呼叫後定義了吧;

再舉個例子

function

test1()

test1();

輸出結果是 undefined 而沒有報錯 這就說明 在使用前已經宣告了 但是在呼叫之前沒有賦值而已嘍

其實是這樣的

function

test1()

test1();

現在理解了嗎?

執行階段

執行階段這一塊,就是說 變數賦值啦 函式執行啦都在這個階段,從上而下很好理解

就是順序就是  :

用一段**來解釋吧

var a="boy";

var b="girl";

function

test()

test();

console.log("結束了");

/*全域性預解析階段

變數收集

var a;

var b;

function test()

a="boy";

b="girl";

test();從這到函式預解析階段

var c;

函式執行階段

c="手牽手"

console.log(c);

再回到全域性執行階段

執行console.log("結束了");

結束!!

*/

看到這裡的朋友都能差不多懂了吧!

JS事件迴圈,了解一下

在理解事件迴圈之前,我總會遇到一些奇奇怪怪的問題 比如明明已經調介面拿到了資料,可是跟在調資料之後的操作卻沒有正常執行 又或者不知道為啥,裡非得加個settimeout才能正常跑通 特別是在運用promise的時候,更是有各種問題百思不得解。遇上問題要解決,更要知道問題產生的原因,這樣才能hold住...

了解一下NTLM

ntlm 在客戶機與伺服器之間提供身份認證的安全包。ntlm 身份驗證協議 是 質詢 應答身份驗證協議,是windows nt 4.0 及其早期版本中用於網路身份驗證的預設協議。windows 2000 中仍然支援該協議,但它不再是預設的。ntlm身份驗證過程 ntlm 是用於 windows nt...

了解一下 display flex

一 display flex flex 是flexuble box的縮寫,意為 彈性盒子 用來為盒狀模型提供最大的靈活性.任何乙個容器都可以指定為flex布局.box 行內元素也可以使用flex布局.box webkit核心的瀏覽器,必須加上 webkit box 注意為父級設計flex布局以後,子...