TypeError: obj is not iterable의 원인과 해결방안

익스랩 최고 관리자

·

2023. 7. 25. 20:22

반응형

JavaScript 오류 해결하기: "TypeError: obj is not iterable"

 

목차1. 오류 설명2. 발생 원인3. 해결책

 

 

1. 오류 설명

이 오류는 JavaScript에서 발생하는 일반적인 에러 중 하나로, 반복 가능한(iterable) 객체가 아닌데 반복문을 사용하려고 할 때 발생합니다. 반복 가능한 객체란 배열(Array), 문자열(String), Set, Map 등과 같이 for...of 반복문을 사용하여 요소들을 순회할 수 있는 객체를 말합니다. 하지만 반복 가능한 객체가 아닌 일반 객체나 null, undefined와 같은 값에 대해 for...of 반복문을 사용하면 해당 오류가 발생합니다.

 

 

2. 발생 원인

이 오류가 발생하는 주요 원인은 다음과 같습니다.

 

1. 반복 가능한 객체가 아닌 일반 객체를 for...of 반복문에 사용한 경우:

const obj = { name: 'Alice', age: 30 };
for (const item of obj) {
  // TypeError: obj is not iterable
}

 

2. null 또는 undefined 값을 for...of 반복문에 사용한 경우:

const value = null;
for (const item of value) {
  // TypeError: value is not iterable
}

 

3. 숫자(Number), 불리언(Boolean)과 같은 원시 데이터 타입을 for...of 반복문에 사용한 경우:

const num = 123;
for (const digit of num) {
  // TypeError: num is not iterable
}

 

4. 객체가 Symbol.iterator 메서드를 구현하지 않은 경우:

const obj = { name: 'Bob' };
for (const item of obj) {
  // TypeError: obj is not iterable
}

 

 

해결책

이러한 오류를 해결하기 위해서는 반복 가능한 객체를 사용해야 합니다. 배열, 문자열, Set, Map 등과 같이 for...of 반복문을 지원하는 객체를 사용해야 합니다.

 

올바른 예시

 

1. 배열을 for...of 반복문에 사용:

const arr = [1, 2, 3];
for (const item of arr) {
  console.log(item);
}

 

2. 문자열을 for...of 반복문에 사용:

const str = 'Hello';
for (const char of str) {
  console.log(char);
}

 

3. Set을 for...of 반복문에 사용:

const mySet = new Set([1, 2, 3]);
for (const item of mySet) {
  console.log(item);
}

 

4. Map을 for...of 반복문에 사용:

const myMap = new Map([['name', 'Alice'], ['age', 30]]);
for (const [key, value] of myMap) {
  console.log(key, value);
}

 

 

만약 반복 가능한 객체가 아닌 경우,

일반적인 for 루프나 forEach 메서드를 사용하여 객체를 순회해야 합니다.

 

올바른 예시:

const obj = { name: 'Alice', age: 30 };
// 일반적인 for 루프 사용
for (const key in obj) {
  if (Object.hasOwnProperty.call(obj, key)) {
    console.log(key, obj[key]);
  }
}

// forEach 메서드 사용
Object.entries(obj).forEach(([key, value]) => {
  console.log(key, value);
}

 

위의 해결책을 적용하면 "TypeError: obj is not iterable" 오류를 해결할 수 있습니다. 반복 가능한 객체를 사용하여 for...of 반복문을 적절히 활용하는 것이 중요합니다. 오류를 발생시키는 원인을 파악하고 적절한 처리를 통해 안정성을 확보해야 합니다.

반응형

💖 포스터에게 힘 보내기 💖

카카오뱅크
3333-25-9477515
치킨 좋아하는 포스터