반응형
타입 강제변환의 사례
다음 JavaScript 코드는 배열 arr
에 있는 각 요소에 대해 반복을 수행하며, console.log
를 이용해 배열의 요소를 출력하려고 시도합니다. 그러나 console.log
호출 부분이 조건문 안에 있고, 조건문의 논리가 올바르지 않습니다.
강제변환 과정
조건문 arr.length && arr[i] < 500
은 배열의 길이가 0이 아닌 경우 true
가 되고, 그 후에 arr[i] < 500
의 평가가 이루어집니다. arr[i] < 500
부분에서는 arr
의 i번째 요소가 500보다 작은지 비교합니다. 배열의 요소들은 문자열이고, 비교는 암시적 타입 변환을 통해 수행됩니다. 문자열과 숫자를 비교할 때, 문자열은 먼저 숫자로 변환되고 나서 비교가 이루어집니다. 그러므로 '1' < 500
, '10' < 500
, '100' < 500
은 모두 true
가 됩니다. 하지만 '1000' < 500
은 false
이므로, 마지막 요소는 출력되지 않습니다.
실행 결과를 보면, 첫 번째 세 요소 '1'
, '10'
, '100'
은 500보다 작다고 평가되어 콘솔에 출력되고, 마지막 요소 '1000'
은 500보다 크므로 출력되지 않습니다.
코드를 의도대로 모든 요소를 출력하려면 조건문을 삭제하면 됩니다:
var arr = ['1', '10', '100', '1000'];
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]); // 모든 요소를 출력합니다.
}
코드를 수정해서 올바르게 작동된 결과입니다.
반응형
'도서로 공부하는 프로그래밍 > 코딩 자율학습' 카테고리의 다른 글
[NodeJS] ES 모듈로 내부 캡슐화 (51) | 2024.04.17 |
---|---|
[NodeJS] 클래스 활용하기 (55) | 2024.04.16 |
[JS] 타입의 강제 변환 (38) | 2024.04.14 |
[JS] 자바스크립트 이름에 얽힌 사연과 관리 (32) | 2024.04.13 |
[NodeJS] 익스프레스 서버 만들기 (37) | 2024.04.12 |