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

首頁 > 編程 > JavaScript > 正文

JavaScript中的閉包原理分析

2019-11-21 00:41:41
字體:
來源:轉載
供稿:網友
我們來看一個定義:
Closure
所謂“閉包”,指的是一個擁有許多變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。
這說明了,JavaScript中的閉包是包含了上下文的函數,也就是說,這個函數的作用基礎,是它所處的環境,這是不能超越的,跟線性代數是不是有一點似曾相識的感覺呢?
換個角度看,閉包的作用是為了實現OO。JavaScript中,沒有像C++那樣的public、private、protect屬性標識, 建立起類比較困難。“類是帶行為的數據,而閉包是帶數據的行為”,在JavaScript中我們用函數的定義代替類的定義,用閉包代替了setter/getter方法。請看一段livecode:
復制代碼 代碼如下:

function f1(){
    var n=1;
    function getter(){
      alert(n);
    }
    return getter;
  }

上文中n的聲明和函數getter組成了一個典型的閉包。最終返回的函數,即剛剛所講的“行為”,其實目的就是為了得到n的值,所以說閉包就是帶有數據的行為。
另外,我覺得阮一峰說的閉包也是很簡潔的:“我的理解是,閉包就是能夠讀取其他函數內部變量的函數。”
另一篇更為學術的解釋:
http://demo.VeVB.COm/js/javascript_bibao/index.htm
我希望各位能夠真正從學術上的定義理解閉包,因為所有對閉包定義的詮釋和簡化都是對JavaScript的片面解讀。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定州市| 苏州市| 旬邑县| 锡林郭勒盟| 吴江市| 时尚| 巴彦淖尔市| 博客| 若尔盖县| 无锡市| 尼木县| 文安县| 江山市| 民勤县| 上犹县| 牟定县| 洛南县| 江油市| 舟曲县| 平利县| 茂名市| 奉新县| 教育| 永清县| 金湖县| 通江县| 竹北市| 邯郸市| 昆明市| 九台市| 壤塘县| 富源县| 岢岚县| 罗源县| 临高县| 霍城县| 松阳县| 永春县| 三门峡市| 赤峰市| 镇巴县|