Page 17 -
P. 17

품 재고가 없기 때문에 count에 0이 할당된다는 점입니다. 10행의 다음 if 블
              록으로 넘어가면 재고에 오류가 발생합니다. 할인 상품과 정상 상품 모두 재고
              가 없는 것처럼 보입니다.

              실제로는 정상 상품 재고가 있음에도 불구하고 할인 상품 재고를 확인하는 과
              정에서 실수가 있어 잘못된 값을 반환하고 말았습니다.

              이런 오류는 사소한 것으로 무시할 수도 있습니다. 그렇지만 서비스가 운영되
              는 실제 환경에서 발생한다면 미묘하고 찾아내기 어려운 버그이기도 합니다.

              다행히 let을 이용하면 이런 문제를 피할 수 있습니다. 사실 let으로 이 문제를
              피하는 방법은 두 가지입니다.

              let은 블록 유효 범위를 따르므로 블록 내부에 선언한 변수는 블록 외부에 존

              재하지 않습니다.

               variables/let/let.js
               function getLowestPrice(item) {
                 let count = item.inventory;
                 let price = item.price;
                 if (item.salePrice) {
                   let count = item.saleInventory;
                   if (count > 0) {
                     price = item.salePrice;
                   }
                 }
                 if (count) {
                   return price;
                 }
                 return 0;
               }


              위의 경우, 변수 count를 선언하기 위해 if 블록 안에서 let을 사용했기 때문에
              함수를 시작할 때 선언한 변수 count와 충돌하지 않습니다.








          030




     코딩의기술_자바_07.indd   30                                                2019-12-13   오전 10:27:03
   12   13   14   15   16   17   18   19   20   21   22