天天看點

JS基礎知識整合

  1、執行環境:有時也叫環境,是JavaScript中最為重要的一個概念,執行環境定義了變量或函數有權通路的其他資料。

  2、變量對象:每一個執行環境都有一個與之關聯的變量對象,環境中定義的所有的變量和函數都儲存在這個的對象中。

  3、作用域鍊:代碼在環境中執行時,會建立變量對象的作用域鍊,保證對執行環境有權通路的所有變量和函數的有序通路。作用域鍊的前端,始終是目前執行代碼所在環境的變量對象。

  4、活動對象:如果目前執行環境是函數,則将活動對象作為變量對象。

  5、可執行代碼:

  1)全局代碼:例如加載外部的JS檔案或者本地标簽内的代碼,全局代碼不包括function體内的代碼;

  2)函數代碼:function體内的代碼;

3) eval代碼:eval()函數計算某個字元串,并執行其中的JS代碼,比如

eval("alert('helloworld')")。

  6、執行上下文棧:在一個JS程式中,必定會産生多個執行上下文,JS引擎會以棧的方式來處理它們,也就是執行上下文棧。

  7、作用域:JS是一種沒有塊級作用域的語言(包括if、for等語句的花括号代碼塊或者單獨的花括号代碼塊都不能形成一個局部作用域),是以js的局部作用域的形成有且隻有函數的花括号内定義的代碼塊形成的,既函數作用域。

  8、作用域鍊:是作用域規則的實作,通過作用域鍊的實作,變量在它的作用域内可被通路,函數在它的作用域内可被調用。

  作用域鍊是一個隻能單向通路的連結清單,這個連結清單上的每個節點就是執行上下文的變量對象,單向連結清單的頭部(可被第一個通路的節點)始終都是目前正在被調用執行的函數的變量對象(活動對象),尾部始終是全局活動對象。

  9、閉包:函數對象可以通過作用域鍊互相關聯起來,函數體内的資料(變量和函數聲明)都可以儲存在函數作用域内,這種特性在計算機科學文獻中被稱為“閉包”。

從技術角度來說,JS的函數都是閉包:函數都是對象,都關聯到作用域鍊,函數内資料都被儲存在函數作用域内。

繼續閱讀