빠른 개요
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,可以在函数外部操作函数内部变量的值 result(); //1000,f2()被执行了2次
함수 내 함수
함수 내부의 변수를 읽을 수 있습니다
항상 상위 함수의 변수를 메모리에 유지하세요
참고: 원하는 경우 부모를 유지하려면 함수의 변수 값이 변하지 않으므로 부모 함수를 객체로 사용해야 합니다
//父函数作对象 var name = 'The Window'; var object = { name : 'The Object', getName : function(){ return function(){ return this.name } } } alert(object.getName()()) //The Window
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
배우기 자바스크립트 클로저(Closure)(阮Yifeng )
관련 추천:
자바스크립트 클로저란 무엇인가요? 자바스크립트 클로저를 사용하는 방법은 무엇입니까?
위 내용은 자바스크립트 클로저 var that=this에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!