BGM용 세이라디오
열기▼       고정
전체
글목록

JS 클로져(closure) 개념 핵심-scope와 밀접, 간단하다.

목요일, 8월 22, 2013
function outerf(){
var outv=1;
function innerf(){
var inv=10;
return (outv/inv);
}
alert(innerf());
alert(typeof inv);
}
outer();
위 자바스크립트를 실행하면 0.1이라는 알림이 뜨고 둘째로 undefined라는 알림이 뜰 것이다. 왜냐하면 innerf에서는 outv를 참조할 수 있지만 outerf에서는 inv를 참조할 수 없기 때문이다.(inv는 저장될 필요가 없으므로 innerf가 종료된 직후 사라진다.)
function의 소속관계나 참조관계에 따라 클로져가 만들어지는 것이다.


덧붙여 외부 변수를 수정하는 것을 막고 싶다면 매개변수(parameter)를 추가하면 된다.
var global=1;
function f(local){
local++;
alert(local); //2
alert(global); //1
}
f();
첫 댓글을 써주세요!

댓글을 인용하려면 @![댓글 ID]!@와 같이 쓰시면 됩니다. "@!" 와 "!@"를 쓰시려면 "+@+!+", "+!+@+"와 같이 써주세요.

페이스북 댓글
.post-outer{ -webkit-transform:none; transform:none; display:inline; padding:0; margin:0; border-width:0; } .hentry>div{ display:none; }