JavaScript - 閉包

理解

  • 關于閉包
function fun(n, o) {
    console.log(o);
    return {
        fun: function (m) {
            return fun(m, n);
        }
    }
}
var a = fun(0);
a.fun(1);
a.fun(2);
a.fun(3);
var b = fun(0).fun(1).fun(2).fun(3);
var c = fun(0).fun(1);
c.fun(2);
c.fun(3);

答案:

 undefined
 0
 0
 0
 undefined
 0
 1
 2
 undefined
 0
 1
 1

用arguments.callee和閉包實現的函數封裝

var data = [];
for (var i = 0; i < 3; i++) {
  (data[i] = function () {
    console.log(arguments.callee.i);//此處i不是外部i
  }).i = i;
}
data[0](); //0
data[1](); //1
data[2](); //2

應用

  • 利用閉包實現自動遞增計數
var countNumber = (function() {
    var num = 0;
    return function() {
        return ++num;
    }
})();
console.log(countNumber());//1
console.log(countNumber());//2
console.log(countNumber());//3
console.log(countNumber());//4
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 目錄 1.執行環境與作用域鏈 2. 立即執行函數 3. 閉包知識點 3.1 什么是閉包 3.2 使用閉包的意義與注...
    犯迷糊的小羊閱讀 646評論 0 11
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。 一、變量...
    zouCode閱讀 1,284評論 0 13
  • 閉包總是讓人摸不著頭腦。陸陸續續接觸了一些閉包的知識,但還是不是非常明白,最近偶然看了一下 jQuery基礎教程 ...
    深沉的簡單閱讀 154評論 0 0
  • 前言 這篇文章使用有效的javascript代碼向程序員們解釋了閉包,大牛和功能型程序員請自行忽略。 基礎篇 閉包...
    kiaizi閱讀 372評論 0 7
  • 《明天的你一定感謝今天的自己:時間掌控術》提到了三個提升決斷力掌控時間的方法。 1秒決定午餐 許小佩是選擇恐懼癥患...
    青果果說閱讀 205評論 5 5