Page 12 -
P. 12
가장 좋은 것은 할당이 변경되지 않는다는 점을 알 수 있는 경우입니다. 두 번
째로 좋은 것은 변경될 수도 있다는 점을 알 수 있는 경우입니다. const를 자주
사용하고 let은 드물게 사용하면 변경되는 부분을 예측할 수 있습니다.
모든 변수 할당을 변경되지 않는다는 사실을 알 수 있는 것과 변경될 수도 있
다는 사실을 알 수 있는 것으로 나눠봅시다.
자, const를 사용할 때 중요한 고려 사항이 하나 있습니다. const에 할당된 값
이 불변값이 되지는 않는다는 것입니다. 즉, 변수를 재할당할 수는 없지만, 값
을 바꿀 수는 있습니다. 모순되는 말처럼 들리겠지만 다음 사례를 보세요.
variables/const/const.js
const discountable = [];
// 코드를 몇 행 건너뛰었습니다.
for (let i = 0; i < cart.length; i++) {
if (cart[i].discountAvailable) {
discountable.push(cart[i]);
}
}
완벽하게 유효한 코드입니다. discountable을 const로 선언했지만 여전히 배
열에 항목을 추가할 수 있습니다. 이러한 특성은 앞서 살펴봤던 것과 같은 문제
를 만들어냅니다. 코드의 뒷부분에서 어떤 값을 보게 될지 확신할 수 없습니다.
객체, 배열, 또는 다른 형태의 컬렉션에 대해서는 좀 더 까다롭게 살펴봐야 합
니다.
무엇을 사용해야 할지 정해진 것은 없지만, 될 수 있으면 조작(mutation)을 피하
는 것이 최선입니다.
위에서 살펴본 예제를 조작하지 않고 작성하면 다음과 같습니다.
variables/const/const.js
const discountable = cart.filter(item => item.discountAvailable);
1장 변수 할당으로 의도를 표현하라 025
코딩의기술_자바_07.indd 25 2019-12-13 오전 10:27:02