2017-11-25 8 views
0

関数プログラミング関数では、値です。したがって、関数が値の場合、なぜ変数をコールバック関数として使用できないのですか?関数が値の場合、コールバック関数を変数にできないのはなぜですか?

function myFunction() {}はコールバックとして機能します。

myFunction = function() {}はコールバックとして機能しません。

以下のテストコードは機能しません。理由はわかりません。

'use strict'; 
 
\t 
 
var myFunction; 
 
\t 
 
window.addEventListener('click', myFunction); 
 
\t 
 
myFunction = function() { 
 
    console.log('clicked'); 
 
}
<button id="click">click</button>

答えて

1

あなたは、変数が関数に割り当てられている部分を欠場。これはイベントリスナーで使用した後に発生します。イベントリスナーが変数を取得した時点で、変数の値はundefinedです。

割り当てと変数の使用を変更すると、正しく動作します。

Function declarationsは吊り上げられますが、割り当てはそのまま残ります。

+0

ありがとうございました。私はmyFunctionが吊り下げられたと仮定しました。私は次回にそれを見るよ! – DR01D

関連する問題