顯示具有 Effective Javascript 標籤的文章。 顯示所有文章
顯示具有 Effective Javascript 標籤的文章。 顯示所有文章

2015-01-21

Effective Javascript #12 - 變數拉升 Variable Hoisting

又解了一個謎團,Javascript 的區域變數(Local Variable)是 Function-scoped,而非  Block-scoped。

用程式說明。
function hoist(i) {
  console.log('input - ' + i);
  for (var i=0; i<5; i++) {
    console.log('loop - ' + i);
  }
  console.log('return - ' + i);
  return i;
}
hoist(3);
傳入 i = 3,第一行輸出 input - 3,沒有問題。

然後進入迴圈,重新命名 i,從 0 加到 4,因而輸出 loop - 1 ~ 4,這也可以理解。

問題在 return 應該是多少?

按照 Block-scoped 概念,應該是 return - 3,錯!