작성
·
144
0
자동차 게임 예시를 통해, 지역변수를 선언이 외부로부터 그 값을 바꾸지 못하도록 한다는 것을 이해하였습니다. 그런데 3:03초쯤에 외부에게 지역변수 변경 권한을 부여한다는게 무슨 의미인지 잘 와닿지 않습니다. 자동차 게임에서 지역변수를 선언하면서 외부에서 값을 변경 못하도록 한건, 지역변수 변경 권한을 없앤것 아닌가용?.?
답변 2
1
예로 들은 Car에는 'run'이라는 메서드가 있습니다.
이 메서드는 km값을 받아서 지역변수 중 fuel, total 값을 변경하게 합니다.
물론 직접 변경은 아니고, 내부에서 적절한 판단을 거쳐 안전하게 처리하고 있습니다.
즉 외부에서는 제한적이긴 하지만 어쨌든 'run' 메서드를 통해서 지역변수의 접근 및 변경 권한을 '일부' 부여받은 셈이죠.
만약 Car 함수를 다음과 같이 작성하였다면 권한은 보다 직접적일 수도 있습니다.
var createCar = function (f, p) {
// ...
return {
set fuel(f) {
fuel = f;
},
// ...
};
}
이제는 외부에서 `car.fuel = 10;` 등과 같은 명령을 통해서 직접 지역변수의 값을 변경할 수도 있습니다.
이렇듯 외부에 어떤 권한을 줄 것인지, 거기에 어떤 제한을 걸 것인지는
createCar 함수의 return할 객체 안에 어떤 내용을 담을 것인지에 따라 달라질 것입니다.
0