1. 程式人生 > >js學習筆記(js變數作用域)

js學習筆記(js變數作用域)

-js使用靜態作用域:只與變數宣告位置有關,而與函式執行順序無關

-js沒有塊級作用域:沒有for、if這種塊級作用域

-ES5中使用詞法環境管理靜態作用域

一、詞法環境:

1、組成:

-環境記錄(形參、變數、函式等)

-對外部詞法環境的引用(outer)

2、一段程式碼開始執行前,先初始化詞法環境

    -有哪些引數會被初始化到詞法環境中?

               形參、函式定義、變數定義

    -使用var定義的引數,在初始化詞法環境中都是undefined。

3、結構:

4、問題:

-形參、函式定義、變數定義名稱衝突

          優先順序:函式定義  >  形參  >  變數定義

-arguments:在函式裡面定義好的變數、我們可以通過arguments訪問到函式中傳過來的實參,也被放到了詞法環境中

-函式表示式

        函式物件在函式表示式執行時才建立,函式定義中的函式物件是在函式執行前就建立了。

5、詞法環境的改變:

-with

-try。。。catch