JavaScript - 문제 미리보기

문제 767

hard
다음 두 코드의 실행 결과를 비교했을 때 올바른 설명은?

코드 A:
```javascript
const myJSON = '{"name":"John", "age":30, "cars":["Ford", "BMW", "Fiat"]}';
const myObj = JSON.parse(myJSON);
let text = "";
for (let i in myObj.cars) {
text += myObj.cars[i] + " ";
}
```

코드 B:
```javascript
const myJSON = '{"name":"John", "age":30, "cars":["Ford", "BMW", "Fiat"]}';
const myObj = JSON.parse(myJSON);
let text = "";
for (let i = 0; i < myObj.cars.length; i++) {
text += myObj.cars[i] + " ";
}
```
A. 코드 A만 올바르게 작동한다
B. 코드 B만 올바르게 작동한다
C. 둘 다 같은 결과를 출력하지만, 코드 B가 더 명확하다
D. 둘 다 다른 결과를 출력한다

정답: C

이 문제는 배열 순회의 두 가지 방법을 비교합니다.

코드 A 분석 (`for...in` 루프):

• `for (let i in myObj.cars)`에서 `i`는 배열의 인덱스(문자열)
• `i = "0"`, `"1"`, `"2"` 순으로 순회
• `myObj.cars[i]`로 각 요소에 접근
• 결과: `"Ford BMW Fiat "`

코드 B 분석 (전통적인 `for` 루프):

• `for (let i = 0; i < myObj.cars.length; i++)`에서 `i`는 숫자
• `i = 0, 1, 2` 순으로 순회
• `myObj.cars[i]`로 각 요소에 접근
• 결과: `"Ford BMW Fiat "`

왜 코드 B가 더 명확한가?

• 배열 순회 시 전통적인 `for` 루프가 의도를 더 명확하게 표현
• 숫자 인덱스를 직접 사용하여 배열 특성에 더 적합
• 대부분의 개발자들이 선호하는 방식

현대적 대안:
```javascript
// ES6+ 방법들
myObj.cars.forEach(car => text += car + " ");
// 또는
for (const car of myObj.cars) {
text += car + " ";
}
```

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.