JavaScriptでの関数内フラグ欠如エラー
数字と数値を受け取り、指定された数字が数値の中に含まれているかを チェックする関数を作りたいとします:
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;
}