理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧
來源:懂視網
責編:小采
時間:2020-11-27 20:55:19
理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧
理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧:作用域分配與變量訪問規則 在 ECMAScript 中,函數也是對象。函數對象在變量實例化過程中會根據函數聲明來創建,或者是在計算函數表達式或調用 Function 構造函數時創建。(關于'函數對象'請見《理解Javascript_08_函數對象》)。每個函數對象都有一個內部的
導讀理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧:作用域分配與變量訪問規則 在 ECMAScript 中,函數也是對象。函數對象在變量實例化過程中會根據函數聲明來創建,或者是在計算函數表達式或調用 Function 構造函數時創建。(關于'函數對象'請見《理解Javascript_08_函數對象》)。每個函數對象都有一個內部的

作用域分配與變量訪問規則
在 ECMAScript 中,函數也是對象。函數對象在變量實例化過程中會根據函數聲明來創建,或者是在計算函數表達式或調用 Function 構造函數時創建。(關于'函數對象'請見《理解Javascript_08_函數對象》)。每個函數對象都有一個內部的 [[scope]] 屬性,這個屬性也由對象列表(鏈)組成。這個內部的[[scope]] 屬性引用的就是創建它們的執行環境的作用域鏈,同時,當前執行環境的活動對象被添加到該對象列表的頂部。當我們在函數內部訪問變量時,其實就是在作用域鏈上尋找變量的過程。
理論性太強了(總結死我了!),還是讓我們來看一段代碼吧:
代碼如下:
輸出,而當訪問變量adf時,沒有在作用域中尋找到,訪問出錯。
注:通過內存圖,我們會發現作用域鏈與prototype鏈是如此的相象。這說明了很多問題...(仁者見仁智者見智,自己探尋答案吧!)
閉包原理
在我們了解了作用域的問題之后,對于閉包這個問題已經很簡單了。什么是閉包?閉包就是封閉了外部函數作用域中變量的內部函數。
我們來看一個典型的閉包運用:生成increment值
代碼如下:
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧
理解Javascript_15_作用域分配與變量訪問規則,再送個閉包_javascript技巧:作用域分配與變量訪問規則 在 ECMAScript 中,函數也是對象。函數對象在變量實例化過程中會根據函數聲明來創建,或者是在計算函數表達式或調用 Function 構造函數時創建。(關于'函數對象'請見《理解Javascript_08_函數對象》)。每個函數對象都有一個內部的