這次來探討順序的先後問題,比較 function 跟變數,有何差異性
假設以下情況:
console.log(a);
var a;
console.log(a);
a = 10;
console.log(a);
這時候在 console 會輸出什麼呢 ?
答案是:
顯示錯誤
undefinded
10
這裡說明一下
第一行 console 因為我們前面並未宣告此變數,所以顯示錯誤
第二行,我們宣告了變數 a 但並未賦予值
所以第三行會顯示 undefinded
第四行,變數 a 賦予了值 10
所以第五行,才會輸出 10
所以當我們在撰寫變數的順序時,一定會先宣告且賦予值,才會去做計算或者輸出
這樣的情況,當拿來 function 的時候,又會如何?
程式碼如下:
greet();
function greet(){
alert('hello');
}
我們先呼叫greet();
函式,才去宣告函式 greet()
按照上述變數的邏輯,在 function 是否會出現錯誤?
其實是不會的,這是因為當 JavaScript 在執行時,會先把宣告的函式都先自動移到最前面
所以讀取時順序會是:
function greet(){
alert('hello');
}
greet();
但通常大部分的人在撰寫 JavaScript 時,都會自動把宣告的函式寫在最前面
所以在 JavaScript 的世界裡,順序是很重要的,都有可能是造成錯誤的其中原因之一。