문제
- 문자열로부터 정규표현식에 해당하는 부분을 제거하려 하였으나, undefined가 삽입되는 현상이 발생하였습니다.
- replace 함수의 두 번째 인자가 생략되었기 때문입니다.
// 반복문 내부 코드
// 탐색 대상 letter 정규표현식 생성
const regexp = new RegExp(letter, 'g');
// 발견된 문자열의 개수를 결과에 더하기(옵셔널 체이닝 ?, null 병합 연산자 ?? 사용)
result += input.match(regexp)?.length ?? 0;
// input으로부터 검사 완료된 문자열을 전부 제거
input = input.replace(regexp);
// ddz=z=
// dundefinedz=
// dundefinedundefined
해결
- replace 함수의 두 번째 인자로써 정규표현식에 일치하는 부분을 대체할 문자열을 전달합니다.
// before
input = input.replace(regexp);
// after
input = input.replace(regexp, '');
깨달은 점
이렇게 사소한 부분에 오류 및 경고를 발생시켜 의도치 않은 동작을 막아주는 것이 얼마나 감사한 일인지 깨달았습니다.
replace(pattern, replacement);
'크고 작은 문제들 > 사소한 실수' 카테고리의 다른 글
[CSS] 색상에 큰따옴표 사용 + content 속성에 따옴표 미사용 (0) | 2023.09.03 |
---|---|
[PWA] mainfest.webmanifest를 가져오지 못하는 문제 (0) | 2023.07.28 |
[HTML 태그] 컴포넌트 이름이 Form인 div 요소 (0) | 2023.07.11 |
테스트 파일 확장자 실수 (0) | 2023.06.22 |