javascript函式讀取變數作用域簡單介紹

antzone發表於2017-04-08

關於作用域的基本概念可以參閱javascript作用域詳解一章節。

但是下面再介紹一個細節,可能不少的朋友都沒有注意到,因為看到不少人在提問。

先看一個程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var num=10;
function foo(){
  console.log(num);
}
function func(){
  var num=100;
  foo();
}
func();

上面的輸出結果是10,可能很多人認為是100。

他們的思路是:foo()函式中沒有變數num的定義,所以向上查詢,於是在func函式中找到。

其實並不是這麼回事,foo()函式要去建立這個函式的作用域取值,而不是在呼叫它的父作用域。

相關文章