js中普通的變數會宣告提前外,函式也會宣告提前,不同的是由於函式的宣告有兩種方法,宣告提前的方式也就有兩種方式;
1、通過 var fn=function(){}定義函式,只是將函式名提前了,函式體沒有提前,如果在函式體前使用fn()呼叫函式就會報錯
fn()
;varfn=
function()
//結果:報錯!uncaught typeerror: fn is not a function
2、通過function fn(){}定義函式,是將整個函式體提前了,此時使用fn()呼叫函式就會正常
fn()
;functionfn(
)//結果:函式體提前
總結:通過var宣告的變數都是將變數名提到當前script塊的頭部,賦值留在原位置,如果在賦值之前訪問變數或函式,返回結果分別是undefined和報錯; JS函式宣告提前 1
var a 10 function pay pay 7 console.log a 7 函式宣告提前 執行js 前,解析器將當前作用域內宣告的所有變數和函 數都會放到作用域的開始處 1 function pay 會提前宣告 2 var a 10 3 pay 執行函式 4 a 3 a首先會在自己的函式...
JS宣告提前
js中的宣告提前,變數宣告提前,函式宣告提前,以及宣告提前的順序 console.log a a var a functiona console.log a a 6 a 四個輸出分別是什麼呢?我們來除錯一下,執行到 a 6時輸出如下 最後乙個a 報錯。接下來我們來分析一下原因 一 什麼是變數宣告提前...
js 變數 函式宣告提前問題
1 變數宣告提前 看 function 以上 報錯 referenceerror a is not defined,這很好理解 根本就沒宣告當然報錯啦,往下看 function 以上 對於直譯器來說是下面這樣的,所以沒有報錯,且輸出了undefined function 再來看一中情況 functi...