2016-10-01 12 views
1

私はjavascriptのためのMDNのチュートリアルを以下だし、彼らはボタンにonclickのハンドラを追加し、関数内の関数を呼び出す:関数内で関数を呼び出す利点はありますか?

myButton.onclick = function() { 
setUserName(); 
} 

私が直接関数にイベントを割り当ててみました、それはまだ働いていましたそれで、私は自分のやり方をする正当な理由があるのか​​疑問に思いました。

+0

一般的には、いくつかの点でパラメータを変更する必要がある場合、または複数の関数を順番に呼び出す必要があります。 – zzzzBov

+0

私はパラメータについてのビットを理解していないが、私は複数の関数を呼び出す理由を参照してください。 –

答えて

2

関数が最初の引数として渡されるイベントオブジェクトを気にしない場合は、noです。それはコードを膨らませ、メモリ内に余分なオブジェクトを作成し、何のメリットもありません。

+0

イベントオブジェクトと最初の引数の意味を理解できませんでした。申し訳ありませんが、どうぞご理解ください。 –

+0

https://developer.mozilla.org/en-US/docs/Web/API/Event – Quentin

0

イベントを処理するラムダ関数を定義することは、IMOのコーディングの汚い方法です。インターフェイスと実際の処理を分離することは、よりクリーンで安全です。

ハンドラで何か複雑なことをする必要がある場合は、適切に名前を付けられた関数を定義してそのハンドラを割り当てるのと同じように簡単です。あなたは、ダミーのイベントを供給することによって、それをテストする別のボタンからイベントを処理するためにそれを再利用するなど、あなたのハンドラでやりたいことができますが、この恐ろしい命名努力をしたら

、一方、など

ほとんどの場合、数週間または数か月以上はないかもしれないウェブページは、とにかくきれいなコーディングのための最良の場所ではありません...

+0

申し訳ありませんが、私は初心者で、ラムダ機能が何であるか、あるいはあなたがインターフェイスの意味を理解できませんでした。 –

+0

ラムダ関数は単なる名前のない関数です。インターフェイスは基本的にあなたが見るもの(ボタン、divsなど)ですが、処理はコードのアルゴリズム部分です(ユーザーがインターフェイスを介してアクションをトリガーすると、データで何をするか)。たとえば、ユーザーがボタンをクリックするか、いくつかのホットキーを押すと、同じ処理を実行できます。 –

関連する問題