理解閉包的含義以及他的使用
阿新 • • 發佈:2017-07-01
var urn 執行 標識 nbsp 函數 返回 con 訪問
1、什麽是閉包,
閉包就是能夠讀取其它函數內部的變量。
首先我們來看一段代碼:
function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); //控制臺輸出1,再輸出2
再來看一段代碼:
function a(){ var n = 0; this.inc = function () { n++; console.log(n); }; } var c = new a(); c.inc(); //控制臺輸出1 c.inc(); //控制臺輸出2
這就是閉包,是不是很簡單!
這裏 inc 函數訪問了構造函數 a 裏面的變量 n,所以形成了一個閉包。再來看一段代碼:
function a(){ var n = 0; function inc(){ n++;
console.log(n); } return inc; } var c = a(); c(); //控制臺輸出1 c(); //控制臺輸出2
看看是怎麽執行的:
var c = couter(),這一句 couter()返回的是函數 inc,那這句等同於 var c = inc;
c(),這一句等同於 inc(); 註意,函數名只是一個標識(指向函數的指針),而()才是執行函數。
後面三句翻譯過來就是: var c = inc; inc(); inc();,跟第一段代碼沒有區別。
理解閉包的含義以及他的使用