728x90
반응형
jQuery 라이브러리 사용 중, 아래와 같은 에러가 발생했다.
SyntaxError: Illegal continue statement: no surrounding iteration statement
continue가 문제라는 것 같았다. 사실 continue문을 사용하는 것을 지양하라고 듣긴 했는데 위 에러는 처음 보는 에러여서 검색해보니, jQuery $.each 또는 foreach 문에서는 continue, break, yield 문을 사용하지 못 한다고 한다.
jQuery $.each() 반복문에서 continue 사용 불가 이유
- JavaScript에서 continue는 전통적인 반복문(for, while, do...while) 내에서만 작동하는 제어문임.
for(let i=0; i<5; i++) {
if(i === 2) continue; // i가 2일 때는 아래 코드를 건너뛰고 다음 i로 넘어감
}
그런데 jQuery $.each()는?
$.each()는 내부적으로 자체 콜백 함수와 반복 제어 방식을 사용
$.each(arr, function(index, value) {
if (value % 2 === 0) return true; // 또는 return;
});
- 이 콜백 함수는 내부에서 반복을 제어하는 함수이며, continue는 JavaScript 루프의 반복문 범위가 아니기 때문에 작동하지 않음.
- 즉, $.each() 안에서 continue를 쓰면 SyntaxError가 발생하지 않지만, 반복이 건너뛰어지지 않음.
정리
제어문 | 반복문(for, while)에서 동작 여부 | $.each() 내부 콜백에서 사용 가능 여부 | 대체 방법 및 설명 |
continue | O | X | return true; 또는 return; (다음 반복으로 건너뛰기) |
break | O | X | return false; (반복 중단) |
return | 함수 내부에서 가능 | O | 콜백 함수 종료, true/false 반환으로 제어 가능 |
throw | O | O | 예외 발생, 정상 종료를 중단하고 에러 전달 |
yield | 제너레이터 함수 내에서만 사용 가능 | X | 해당 없음 |
728x90
반응형
'실무' 카테고리의 다른 글
스프링배치 흐름 및 @Schedueld 어노테이션 사용 시 유의사항 | 민민의 하드디스크 - 티스토리 (0) | 2025.05.21 |
---|---|
[DB] CONNECT BY와 WITH RECURSIVE 계층형 데이터 조회 | 민민의 하드디스크 - 티스토리 (1) | 2025.03.23 |
[Spring] 데이터 전달하기: Model, Map, DTO 비교와 최적 활용 | 민민의 하드디스크 - 티스토리 (0) | 2025.03.14 |
[DB] 트랜잭션과 데이터베이스 락(Transction & DB Lock) | 민민의 하드디스크 - 티스토리 (0) | 2025.03.13 |
[DB] ROWNUMBER와 RANK의 차이 | 민민의 하드디스크 - 티스토리 (1) | 2025.03.09 |