因為會忘,所以要寫下來

JS hoisting (變數提升)

1 minutes to read

foo();

function foo() {
  console.log(1);
}
var foo = function () {
  console.log(2);
};
function foo() {
  console.log(3);
}

foo();

所得到的結果依續會是 ** 3 **
** 2 **

根據 js 的特性 一般在全域範圍裡

不管 function 寫在哪裡 整段函式都會被自動提升到最上面 當然 var 也是 但是 var 只會提升變數名稱 而後面的值並不會 所以 當 var 裡面的變數還沒有值的時後 回傳的值就會是 undefined

以上面這段 code 來說 第一個 foo 會依據 js 逐行讀取的特性 所得到的結果就會是 3 而第二個 foo js 所讀取的順序就會是

foo();
function foo() {
  console.log(1);
}
var foo;
function foo() {
  console.log(3);
}
var foo = function () {
  console.log(2);
};
foo();

答案就會是 ** 2 **

對這篇文章有什麼想法嗎?

Copyright © 2024 Mandy. All rights reserved. Build with Astro