2017-12-25 20 views
0

変数であるp1Scoreが数値で、スパンの内容であるp1ScoreDisplayがあります。これが正しく動作イベントリスナーの匿名関数とイベントリスナーで機能する匿名関数との比較

p1.addEventListener("click", function() 
{ 
p1Score++; 
p1ScoreDisplay.textContent = p1Score; 
}); 

、しかし、私は機能を匿名にする必要はありません:私は使用してスパンをスコアにそれがクリックされるたびに1を加算して更新イベントリスナーを作りました。私は別の関数を作成し、そのように機能へと進む無名関数作られた:他の1つが、すべての時間を発生し、私はなぜわからないながら

function addPoint(score, scoreDisplay) 
{ 
score++; 
scoreDisplay.textContent = score; 
} 

p1.addEventListener("click", function(){addPoint(p1Score,p1ScoreDisplay);}); 

このバージョンでは、一度だけイベントをプリフォームを?

+0

実際には、2つの異なるアプローチを比較します.1つはグローバル変数、もう1つは手渡しプリミティブとオブジェクトです。 2つのオブジェクトを取る場合は、そのオブジェクトを使用してプロパティを増分し、別のイベントでもそのオブジェクトを使用できます。 –

答えて

1

最初の例では、p1Scoreの値を増やします。次のクリックでそれが再び増分されます。

2番目の例では、p1Scoreの値をscoreにコピーしてから、scoreの値を増やします。次回のクリックではのの値がp1Scoreからscoreに変更されずに再度コピーされます。