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();
△
페이스북 댓글