일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- sever action
- js
- commit phase
- SSR
- server components
- interceptor routes
- static pages
- unstable_nostore
- 프로그래머스
- render phase
- revalidatetag
- 타입스크립트
- supabase realtime
- 리액트
- image component
- @tailwind utility
- client components
- revalidatepath
- sever components
- @tailwind components
- CSS
- 클로저
- createbrowserrouter
- dynamic pages
- @tailwind base
- 자바스크립트
- 3진법 뒤집기
- iron-session
- @tailwind
- RECOIL
Archives
- Today
- Total
개발하는 너구리
TIL-24.04.22 본문
문제점
반복문을 사용하여 코드의 흐름을 제어할때 주의할점을 발견했다.
보통 반복문은 for문 혹은 map( ), forEach( ) 등을 사용하여 코드의 흐름을 제어하는데, 반복 중간에 반복을 중단하고 그때까지 변수에 담겨있는 값을 꺼내와야하는 경우가 있다.
예를 들면,
정수로 이루어진 문자열 n_str이 주어질 때,
n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.
function solution(n_star) {
let array = n_star.split('')
array.map((value,index) => {
if(v==='0'){
array.shift()
}else {
break;
}
})
return array.join('');
}
코드를 반복할때, map( )를 사용했는데 배열의 원소가 '0'이면 배열에서 삭제하고, '0'이 아닌 문자를 만나면 반복을 중지하는 코드이다.
코드를 실행해봤는데 SyntaxError: Illegal break statement 라는 에러가 발생했다.
반복 중간에 반복을 중지시키려면 break라는 키워드로 중지시키는데 왜 안되는지 이유를 몰랐다. 그래서 이에 관한 문제를 구글링하던 중
map( ) 와 forEach( )는 throw(예외)를 발생시키지 않는 한, 중간에 반복을 종료할수없다. 라는 사실을 알게되었다.
내가 원하던 바대로 하려면 for문을 사용한 반복을 수행하면된다.
function solution(n_str) {
let array = n_str.split('');
for (let i = 0; i < array.length; i++) {
if (array[0] === '0') {
array.shift();
} else {
break;
}
}
return array.join('');
}
for문은 continue, break로 반복을 제어 할수있다.
알게된점
같은 기능을 하는 함수들이더라도 함수마다 주의사항이 존재할수있다. 에러를 맞이하기 전에 이러한 사항들을 미리 아는 것도 중요하다.
'TIL' 카테고리의 다른 글
TIL-24.04.24 (0) | 2024.04.24 |
---|---|
TIL-24.04.23 (0) | 2024.04.23 |
TIL-24.04.19 (0) | 2024.04.19 |
TIL-24.04.18 (0) | 2024.04.18 |
TIL-24.04.17 (0) | 2024.04.17 |