質問: new RegExp("^" + input); $(".list").remove(); $.each(fruits, function(i, fruit) { if (fruit.match(reg)) { appendList(fruit); (省略) ``` ここでの ``` $.each(fruits, function(i, fruit) { if (fruit.match(reg)) { appendList(fruit); ``` という部分で matchはregexpを引数にとってマッチするものがあれば配列で戻り値を返すということまでわかりました。 次の行ではappendList(fruit)でマッチしたものを引数として関数を呼び出しています。 ただ、ここでわからないのが ifだとそもそもtrueかfalseの分岐ではないのでしょうか? fruit.match(reg)で配列が帰ってきたとしたら自動でtrue扱いですか? また戻り値として帰って来る配列は何処に格納されるのでしょうか? matchの呼び出し元のfruitに格納されるのでしょうか? appendList(fruit);の呼び出したあとの挙動から見るに、 配列そのままをappendListに引数としてもっていっているというよりもfruitsという配列の値の文字列を持たせているようにしか思えないのですが
回答: if文で使用した場合、matchから返される配列はどこにも格納されません。(deleteされます) 使用したい場合、書き方は色々ありますが、以下のように書けばよいと思います。 ``` // if文でmatchを呼ぶ場合 var hoge = fruit.match(reg); if (hoge) { // 処理 console.log(hoge); } ``` 他言語では参照渡しやポインタなどの概念で、 呼び出し先の関数で元の値を書き換えることもできます。 ※JavaScriptでもクロージャなどの概念でモノによりますが可能です。スコープを勉強されると良いかと思います。