0

大したことではない関数内で関数を呼び出そうとしていますが、何らかの理由でこのロジックから関数を呼び出せない理由がわかりません:高次関数呼び出しの動作が非常に混乱しています

function func1(futurefunc){ 
    futurefunc(); 
} 

function func2(){ 
    return 3+3; 
} 

func(func2); 

上記のコードの結果は未定義です。しかし、私が置く:func(alert)、警告引数が呼び出されます。後者の場合は、実行されている理由を私は理解していないと最初の部分は、私は次のことをしようとすると、この場合にはしかし6

なり、戻り値を印刷していません。

function func1(futurefunc){ 
    return futurefunc(); 
} 

コードは思わこの場合、6である適切な値を提供する。明確な説明。私は何かを逃していないことを望む。

+0

実際に使用している言語の場合は、javascriptタグを追加する必要があります。関数呼び出しの意味は言語によって異なります。 – Gene

+4

'return'ステートメントがないのに、最初のケースで何も返されないのはなぜですか?なぜそれは混乱していますか? – Tomalak

+0

@Tomalak括弧のために混乱していましたが、関数の引数が3 + 3の戻り値を返すので、関数の引数を呼び出す必要があると思っていました。私は基本を忘れていたと思われるかっこを追加して関数を呼び出すことについて学んでいました:) – Alonso

答えて

0

func1はfuturefunc()を呼び出すだけで、returnなので、undefinedが表示されます。

アラートが通過すると、アラートが表示され、ダイアログが表示されます。

func1はfuturefuncを呼び出し、その結果を返します。したがって、6が出力されます。

ここでは分かりにくいことはありません。

+0

私は括弧を使って関数内で関数呼び出しを学んでいましたが、返す値のために常にreturnキーワードが必要であることを忘れていました。関数内では3 + 3の戻り値があるので、値を返すのに十分であると思ったので、関数を呼び出すことで十分だと思いました。しかし、私は間違っているようです。説明ありがとう – Alonso

関連する問題