6 of 17 menu

JavaScript에서 for-in 루프로 배열 순회 시 오류

배열을 순회하려면 for-of 루프를 사용해야 합니다. 그러나 때로는 초보자들이 실수로 for-in 루프를 사용하려고 합니다. 이 오류의 특징적인 증상을 살펴보겠습니다.

다음과 같은 배열이 있다고 가정해 보겠습니다:

let arr = ['a', 'b', 'c'];

이 배열의 요소들을 순회하여 하나의 문자열로 합쳐 보겠습니다.

어떤 프로그래머가 이미 이 작업을 했지만, 실수로 for-in 루프를 사용했습니다. 그 결과를 살펴보겠습니다:

let res = ''; for (let elem in arr) { res += elem; } console.log(res); // '012'를 출력함

결과는 'abc'가 아니라 '012' 문자열입니다. 왜 이런 일이 발생하는지 알아보겠습니다.

왜 배열이 for-in 루프로 순회가 가능한 걸까요? 사실 JavaScript에서 배열은 객체의 특별한 경우입니다. 따라서 기술적으로 이 코드는 올바릅니다. 그러나 이렇게 해서는 안 됩니다.

문제는 for-in가 특정 조건에서 추가적인 속성을 포착할 수 있어, 배열 요소 외에도 원치 않는 것들을 순회 결과에 포함시킬 수 있다는 점입니다. 배열은 for-of로만 순회하세요.

이제 왜 이런 이상한 결과가 나타나는지 알아보겠습니다. 사실 for-in로 순회할 때, 변수명 elem이 혼란을 줄 수 있지만, 실제로 이 변수에 들어가는 것은 키(key)입니다.

이제 발생한 오류를 수정하고 올바른 코드를 작성해 보겠습니다:

let arr = ['a', 'b', 'c']; let res = ''; for (let elem of arr) { res += elem; } console.log(res); // 'abc'를 출력함
한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부