迷惑なバグにつながる奇妙な JS の動作に気付きました..
基本的に、if ステートメントで RegExp オブジェクト (.test() メソッド) を使用して str をテストします。テストされた同じ文字列について、コードに if しかない場合、regexp.test() は true を返し、if に問題なく進みます。
問題は、else がある場合 (そしてそれが必要な場合)、何らかの理由で、テストされた同じ str に対して、regexp.test() が false を返し、else に移動することです...
この動作は何ですか?
私は多くのテストを実行しました...
TL/DR : 同じ RegExp でテストされた同じ文字列の場合、IF ステートメントしかない場合、regexp.test() は true を返しますが、else がある場合は false を返します。
some code
言い忘れましたが、すべての単語でバグが発生するわけではありません..
テキスト フィールドに「armoire」と入力し、Enter キーを押します。このjsfiddleには「else return false」があり、何も起こりません。
searchDeeper 関数 ( if (regexp.test(tested)){ ) の「else return false」を削除して、もう一度テストを実行します。これで、if および msgbox ポップアップに入ります。