速覽
var f1 = function(){ var a = 999; nAdd = function(){n+=1} //沒有var,nAdd是全局變量 f2 = function(){ alert(a) } return f2; } var result = f1(); result(); //999 nAdd(); //相當于一個setter,可以在函數(shù)外部操作函數(shù)內(nèi)部變量的值 result(); //1000,f2()被執(zhí)行了2次
閉包的概念
函數(shù)內(nèi)的函數(shù)
閉包的用途
可以讀取函數(shù)內(nèi)部的變量
讓父函數(shù)的變量始終保持在內(nèi)存中
注意:要想保持父函數(shù)的變量值不變,需要把父函數(shù)當作對象使用
//父函數(shù)作對象 var name = 'The Window'; var object = { name : 'The Object', getName : function(){ return function(){ return this.name } } } alert(object.getName()()) //The Window
var that = this;
var _name = 'The Window'; var object = { _name : 'The Object', //_name 下劃線表示私有變量 getName : function(){ var that = this; return function(){ return that._name; } } } alert(object.getName()()) //The Object
that=this / _this=this
學習Javascript閉包(Closure)(阮一峰)
相關推薦:
Javascript閉包詳細介紹
Javascript閉包實例的簡單應用
javascript的閉包是什么?javascript閉包如何使用?
以上就是javascript閉包 var that=this詳解的詳細內(nèi)容,更多請關注php中文網(wǎng)其它相關文章!