작성
·
161
3
이 전 강의의 클로저 코드에서도 정보가 보호 되는것 아닌가요? 정보보호 관점에서 아래의 코드와 즉시실행 익명함수로 한번 더 감싼것이 어떠한 차이가 있는 것인지 궁금합니다.
function book() {
var point = 100;
var getPoint = function(param) {
point = point + param;
return point;
};
return getPoint;
}
var obj = book();
log(obj(200));
덧붙여 좋은 강의 정말 감사합니다. 😄
답변 2
3
즉시실행 익명함수는 함수 안에 작성한 변수(var)를, 함수를 빠져나오면 자동으로 GC 처리를 하게됩니다. 즉, 메모리에서 지워지므로 변수가 남지 않습니다. 그래서 일반적으로 초깃값을 설정하는 것과 같이 한 번만 처리할 때 사용합니다. 또한, 함수 안의 변숫값을 유지하려면 지워지지 않는 곳에 저장해야 하는데요, ES5에서는 특정 오브젝트에 저장하고 ES6+에서는 주로 Map 오브젝트에 저장합니다.
정보보호 차원에서는 클로저 형태가 좋습니다. 아울러 대상에 차이가 있지만 ES5의 디스크립터를 사용하여 정보 보호를 할 수도 있습니다. 좋은 질문 감사합니다.^^
1