JS-預解析(提升)與程式碼執行過程
1,預解析的過程。
2,程式碼的執行過程。
預解析:程式在執行過程,會先將程式碼讀取到記憶體中檢查,會將所有的宣告在此處進行標記,所謂的標記就是讓js解析器知道這個名字,後面在使用這個名字的時候,不會出現未定義的錯誤,‘這個標記過程就是提升。
## 宣告:
1,名字的宣告,識別符號的宣告(變數的宣告)
** 名字的宣告就是讓我們的解析器知道這個名字
** 名字並沒有任何資料與之對應
2,函式的宣告
** 函式宣告包括兩部分
** 函式宣告與函式表示式的區別,函式宣告是單獨寫在一個結構裡面的,不存在任何語句,邏輯判斷結構中
### 又如下面的預解析執行過程
function f() {};
** 首先告訴解析器有這個函式名字的存在,該階段與變數的名字宣告一致
** 然後告訴解析器這個名字連線的函式體
### 下面程式碼的解析執行過程
報錯:numb is not a function
報錯:
分析過程:
1,預解析程式碼,提升名字
***首先提升名字 numb
***再提升函式名,但是 numb 已經存在,使用跳過,讓名字與函式體對應
***預解析後只有一個名字 numb
2,開始執行程式碼,從第一句賦值語句開始
***numb 賦值為1
***覆蓋了函式體
3,呼叫numb,由於numb是數字1,因此保錯
*****************************************************************************************************************
執行結果:1,undefined
2,456
程式碼解析與執行過程: