###什麼是變數的宣告前置?什麼是函式的宣告前置 (**)
所謂的變數宣告前置就是在一個作用域塊中,所有的變數都被放在塊的開始出宣告。下面通過三段程式碼舉例:
程式碼1:
var a = 1;
function main() {
console.log(a);//1
}
main();//輸出1`
程式碼2:
1 var a = 1;
2 function main() {
3 console.log(a);
4 var a = 2;
5 }
6 main()//輸出undefined
程式碼3:為什麼程式碼2會輸出undefined
1 var a = 1;
2 function main() {
3 var a;
4 console.log(a);
5 a = 2;
6 }
函式的宣告前置就是把整個函式提升到當前作用域的最前面(位於前置的變數宣告後面)。
var num = 1;
console.log(doubleNum(num));//2
function doubleNum(num){ return num2;}
等價於
//函式的宣告前置
var num;
function doubleNum(num){ return num2;}
num = 1;
console.log(doubleNum(num));//2