자바스크립트 함수 내 플래그 누락 오류
특정 숫자와 수를 매개변수로 받아, 해당 수에 주어진 숫자가 포함되어 있는지 확인하는 함수를 만들고자 한다고 가정해 봅시다:
function func(needle, num) {
// 여기에 코드를 작성할 것입니다.
}
우리는 다음과 같이 함수를 사용할 것입니다:
console.log(func('3', '12345')); // true를 출력합니다.
어떤 프로그래머가 이 문제를 다음과 같이 해결했습니다:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
} else {
return false;
}
}
}
그러나 이 해결책은 올바르게 작동하지 않습니다.
문제는 루프 안에 작성된 조건문에서,
첫 번째 반복에서 하나의 return이
실행되거나 다른 하나가 실행되어
루프와 함수에서 모두 탈출하게 된다는 점입니다.
함수 내 암시적 플래그를 사용하여 우리 코드를 올바르게 다시 작성해 보겠습니다:
function func(needle, num) {
for (let digit of num) {
if (digit === needle) {
return true;
}
}
return false;
}