国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

關于Javascript作用域鏈的八點總結

2019-11-20 21:30:41
字體:
來源:轉載
供稿:網友

1. JavaScript函數的作用域鏈分為定義時作用域鏈和運行時作用域鏈;

2.函數被定義的時候,它有一個屬性[[scope]]標明它的定義作用域鏈,定義時作用域鏈[[scope]]遵守這樣的規則:一個函數的定義時作用域鏈[[scope]]總是它所在的外部函數的執行時作用域鏈;

3.全局函數的定義作用域鏈只包含window的屬性;

4.一個函數的執行時作用域鏈總是在定義時作用域鏈的頭部壓入當前活動對象(它包含this,arguments,參數,局部變量);

5.函數執行時,變量尋址總是從作用域鏈的頂端朝下尋找;所以全局變量的尋址速度最慢;

6.內部函數被執行的時候,他仍然能夠訪問它完整的作用域鏈。這就是閉包能夠在運行時能夠訪問已經結束的外部函數定義的變量的原因;

7.函數執行遇到with語句時,會臨時在作用域鏈頂部壓入with指定的對象的所有屬性作為作用域鏈最頂端;

8.函數執行遇到catch的時候,會臨時在作用域鏈頂部壓入catch指定的錯誤對象作為作用域鏈的最頂端;

下面給一個例子并繪制出作用域鏈,以加深理解:

有這么一段代碼:

復制代碼 代碼如下:

function assignEvents(){
    var id = "xdi9592";
    document.getElementById("save-btn").onclick = function(event){
        saveDocument(id);
    };
}

把此函數產生的匿名閉包稱為Closure,則繪制出下圖為assignEvent執行時作用域鏈和Closure的定義時作用域鏈:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 醴陵市| 巴彦县| 华池县| 保靖县| 博乐市| 阿坝县| 兴隆县| 江口县| 秦皇岛市| 旬邑县| 夏邑县| 湘阴县| 周宁县| 应城市| 萨迦县| 虹口区| 攀枝花市| 遵义市| 和龙市| 正镶白旗| 阿鲁科尔沁旗| 富锦市| 襄樊市| 溧水县| 炉霍县| 台中市| 扶余县| 全州县| 遵化市| 辽阳县| 宣恩县| 仙桃市| 屯昌县| 拉萨市| 华容县| 民勤县| 新宁县| 云龙县| 彰化县| 清徐县| 彰化县|