728x90
아래 예시와 같이 자바스크립트에서 중첩으로 반복문을 돌릴 때 한번에 빠져 나올수 있는 방법은 무엇일까
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
// 여기
}
}
label(레이블)
반복문 앞에 붙혀서 사용할 수 있으며 중첩 반복문을 빠져 나갈 수 있다
- 반드시 break와 continue 앞에 있어야 하며
- break는 모든 레이블 구문에서 사용 가능
- continue는 반복문 안에서만 사용 가능하다
label 이름:
구문
label을 이용해 중첩반복문 빠져 나오기
continue
loop1:
for (let i = 0; i < 3; i++) {
loop2:
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
continue loop1;
}
console.log('i: ' + i + ', j: ' + j);
}
}
// i: 0, j: 0
// i: 0, j: 1
// i: 0, j: 2
// i: 1, j: 0
// i: 2, j: 0
// i: 2, j: 1
// i: 2, j: 2
i === 1 && j === 1 을 만나면 loop1로 continue
break
loop1:
for (let i = 0; i < 3; i++) {
loop2:
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
break loop1;
}
console.log('i: ' + i + ', j: ' + j);
}
}
// i: 0, j: 0
// i: 0, j: 1
// i: 0, j: 2
// i: 1, j: 0
i === 1 && j === 1 을 만나면 loop1을 break
반복문이 아닌 경우 label 사용 (break만 가능)
loop: {
console.log("yang");
break loop;
console.log("hi");
}
console.log("won");
// "yang"
// "won"
label을 이용하여 숫자 소수 출력한 예시 코드
let n = 14
nextNum: for (let i = 2; i <= n; i++) {
for (let j = 2; j < i; j++) {
//나머지가 0이면 나누어 떨어지므로 넘어감
if (i % j == 0) continue nextNum
}
console.log(i)
}
//2,3,5,7,11,13
728x90
'Frontend > JavaScript' 카테고리의 다른 글
[js] export default const가 안된다 : import, export (0) | 2024.05.07 |
---|---|
[js] Ajax : fetch와 axios를 더한 (0) | 2024.04.29 |
[js] ?? 라는 연산자도 있었네: nullish (0) | 2024.04.12 |
[js] const는 재할당이 안되는데 객체와 배열은 왜 바뀌는것인가 (1) | 2024.04.12 |
[js] + 를 사용하여 숫자형으로 변환하는 방법 (0) | 2024.04.07 |