티스토리 뷰
TIP 1. const로 변하지 않는 값을 표현하라
* const는 코드를 읽기 쉽게 만드는 제약사항을 가진다.
- 블록의 문맥 내에서 재할당할 수 없는 변수 선언
- 의미: 값을 할당하고 변경하지 않겠다.
예시1)
const taxRate = 0.1;
const total = 100 + (100 * taxRate);
return `구매 금액은 ${total}입니다.`;
=> 구매 금액으로 반환되는 값을 정확히 알 수 있다. total은 상수이며 재할당 할 수 없다는 것을 알 수 있기 때문이다.
예시2)
const discountable = [];
for (let i=0; i<cart.length; i++) {
if (cart[i].discountAvailable) {
discountable.push(cart[i]);
}
}
=> 변수를 재할당 할 수는 없지만 값은 바꿀 수 있다. const로 배열을 선언하였지만 여전히 배열 항목을 추가할 수 있다.
질문점) 예제를 조작(mutation)하는 것을 피하라는 것의 의미는 무엇인가.
const discountable = cart.filter(item => item.discountAvailable);
TIP 2. let과 const로 유효 범위 충돌을 줄여라
* let은 재할당 할 수 있고 블록 유효 범위를 따른다. (if/for)
예시1)
function getLowestPrice(item) {
var count = item.inventory;
var price = item.price;
if (item.salePrice) {
var count = item.saleInventory;
if (count>0) {
price = item.salePrice;
}
}
if (count) {
return price;
}
return 0;
}
//item 정보
const item = {
inventory: 0,
price: 3,
salePrice: 0,
saleInventory: 0,
};
=> 할인 중이 아니고, 재고도 없으면 0을 반환한다.
=> 할인 상품 재고가 없기 때문에 count에 0이 할당되고, 재고에 오류가 발생한다. 정상 상품 재고와 할인 상품 재고를 var로 선언하여 사용하였기 때문에 잘못된 값을 반환하게 된다.
=> let으로 선언하면 블록 내부 선언 변수는 블록 외부에 존재하지 않게 된다.
* 마지막
- let과 const는 같은 이름의 변수를 다시 선언할 수 없다. 변수 이름 재사용 시 문제를 막을 수 있다.
'JS' 카테고리의 다른 글
2장 배열로 데이터 컬렉션을 관리하라 (2) | 2023.10.28 |
---|---|
1장 변수 할당으로 의도를 표현하라 (0) | 2023.10.21 |
JS - splice() (1) | 2023.08.04 |
split(), map(), 람다식 (1) | 2023.07.06 |
JS - 브라우저 객체 모델 (0) | 2023.06.21 |