最近在鞏固前端基礎,看到預解析和代碼執行部分,裏面講到提到了聲明
和提高
,由於與咱們的平常很密切,根據我的所得,寫一篇文章。前端
1. 先解釋一下什麼叫預解析?瀏覽器
2. var關鍵字 函數
// 1. alert(a); // undefined var a = 1; // 2. alert(b); // var b = function(){} // 3. alert(c); var c;
只要是var定義的,無論是變量仍是函數,都是先賦值undefined。若是是變量,也無論是否賦值,在預解析階段都會被賦值爲undefined。code
3. 關鍵字function字符串
alert(a); // 彈出的是下面的function function a(){} // 注意:函數在預解析的時候會將代碼分紅兩部分來執行,第一部分是fn函數;第二部分是(),一個匿名函數,這時在執行過程當中會報錯。若是小括號帶參數,如(2),雖然不會報錯,也打印出2,可是並不能把fn執行,不能當作參數傳遞給fn函數。