0%

JS 筆記 - function 函式 Hoisting 提升觀念

JavaScript Note

瀏覽器在讀取程式碼基本上都是從上到下讀取,在變數的寫法,會是這樣的結果。

1
2
3
console.log(a); //undefind
var a = 1;
console.log(a); //1

上方變數的撰寫跟讀取的結果,會是由上到下讀取,所以在第一行 console.log 因為找不到變數所以結果會是 undefind,第三個 console.log 因為有讀到第二行的變數,所以找到了 a 的值為1。

那 function 呢?

加入一個 function,先看程式碼:

1
2
3
4
5
6
7
8
9
console.log(a); //undefind
var a = 1;
console.log(a); //1

count();//會得到什麼?

function count(){
console.log('hello!');
}

count 結果會是:

1
2
3
4
5
count();// hello!

function count(){
console.log('hello!');
}

function 有一個 Hoisting 的向上提升的概念,就是瀏覽器會先把 function 設定為優先讀取,在瀏覽器的讀取順序會變成這樣:

1
2
3
4
5
function count(){
console.log('hello!');
}

count();// hello!

故在執行 function 的時候,function 名稱寫在上面或下面是沒有差的,但為了讓自己習慣所有程式碼都遵循由上到下讀取的方式,我還是會寫成剛上方一樣的方式,維持一個習慣寫法,也比較不會讓自己搞混!

補充

Hositing 就是將變數&函數提升到所有程式碼最前面,然後先存進記憶體中,後面在做賦值等動作。由此可知 Hositing 主要跟記憶體有關係,而 Hositing 只是一個觀念。


文章參考:

https://hsiangfeng.github.io/javascript/20190419/3635730318/

https://developer.mozilla.org/zh-TW/docs/Glossary/Hoisting