개인 이해 폐쇄 : 함수 정의 된 변수를 액세스 할 수있는 내부 기능을 아웃소싱 함수 내에 정의 기능.
폐쇄 특징 : 변수 상주 메모리
데모 유사한 함수 호출 카운터를 구현 :
함수 FN () { var에 C = 0 , 함수 내부 () { C + = 1이다. ] CONSOLE.LOG (C)가 } 리턴 인너; } var에 F1 = FN () F1을 (); // . 1 F1 () / / 2 C는 메모리 상주 해제되지
사용 시나리오 1의 setTimeout 기준 함수는 파라미터 (첫 번째 파라미터가 기준의 setTimeout 함수) 전달할
함수 laterCall (a) { 복귀 함수 () { CONSOLE.LOG ( "A :" , a) } } VAR Fn2를 laterCall = (123 ); 에서는 setTimeout (Fn2를, 1,000)
사용 시나리오 2 : 아날로그 개인 회원
VAR 모듈 1 = ( 함수 () { var에 A = 1 , VAR의 addOne = 함수 () { + = 1 ; 리턴 } VAR의 subOne = 함수 () { - = 1 ; 리턴 } 창 { addOne : addOne , subOne : subOne } }) (); module1.addOne () module1.subOne ()
사용 시나리오 3 : 객체 지향
함수 사용 (명) { 이 .say = 함수 () { CONSOLE.LOG ( "안녕하세요"+ 이름); } } var에 사용자 = 새 사용자 ( "솔직한" ); () user.say;