function myforEach(arr, func){
for(var i=0; i<arr.length; i++){
func();
}
}
var arr = [1,2,3];
function func2(){
return 3+3;
}
myforEach(arr, func2); // undefined
は、私は2つの引数配列と取るmyforEach関数を作成ファンクションは引数funcとして渡されます。これは、forループ内で以下で3回呼び出されます。次に、3 + 3を加算する値を返す関数func2を宣言します。 次に、私は
myforEach
を2つの引数で実行し、コンソールで3回、値6を出力すると予想しますが、返されるのは未定義です。
私はfunc2の文を変更します。
function func2(){
console.log(3+3);
}
と私はコンソールが6三回を記録し得るもう一度実行します。 myforEach(arr, func2); // (3)6
その後、私は再びfunc2の文を変更します。私は括弧function func2(){alert;} // undefined
なしfunc2の中に警告を配置しようが、括弧function func2(){alert();}
を追加するとき、それは三回
を警告する場合がmyforEach(arr, alert); // (3)alert
を試してみた場合
function func2(){
console.log("hi");
}
myforEach(arr, func2); // (3)hi
ですから質問はなぜfunction func2(){return 3+3;}
が6回3回戻ってこないのでしょうか? forループの中でfunc()はカッコで囲まれているので、追加された関数が呼び出されるのはなぜですか?func2が正しく呼び出されないのはなぜですか?
私はstackoverflowに関するいくつかの調査を行いましたが、何らかの理由でリターンが失われてしまいましたが、理由と根本原因についてさらに詳しい説明はありませんでした。
私は何かが欠けているのか、あまりにも眠いのか分かりません。どんな説明も役立ちます。ありがとう:)
になりますが、func2の3 + 3の戻り値によってコンソールに出力される値が期待されていましたが、間違っているようです。 func()が3回呼び出されているので、ループ内のfunc()への戻り値を6回3回出力するかどうかは疑問でしたが、コンソールでは6回だけ出力しています。何らかの理由がありますか? @ T.J。クラウダーありがとうございました。 :) – Alonso
@AlonsoAhmetaj:明示的な戻り値を設定していない関数を呼び出しているため、あなたが入力した最も外側の式の結果を除いて、自動的に何もコンソールに出力されません( 'undefined') )。それを 'return func();'に変更すると、最初のループの繰り返しで 'myforEach'が終了し、6回だけ表示されます。 –
それを共有する気にならないなら、それを3回出力する適切な方法は何でしょうか?私はその上でconsole.logを使っていましたが、私は働いていましたが、その価値を3回返す別の方法かもしれません。それを変数に追加することもできます。ありがとう! – Alonso