このコード サンプルは、イベント トリガーの if ステートメントと組み合わせた通常の関数宣言とどう違うのでしょうか? 簡潔さだけが利点ですか?
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
このコード サンプルは、イベント トリガーの if ステートメントと組み合わせた通常の関数宣言とどう違うのでしょうか? 簡潔さだけが利点ですか?
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
Javascriptでは、無名関数と呼ばれるものがあります。上記のコードでは、xmlhttp.onreadystatechangeイベントが発生したときに無名関数が実行されます。その他の例は次のとおりです。
window.onkeypress = function(e) {
alert(String.fromCharCode(e.which));
}
または、匿名の変数関数を作成することもできます...
var myFunc = function(msg) { // Create function and assign to var
alert(msg);
}
myFunc("Hello World"); // Call new 'function'
識別子関数は、 FunctionDeclarationまたはFunctionExpressionの開始である予約語です。ステートメントの先頭にある場合 (より正確には、ステートメントを配置できる場所にある場合)、それはFunctionDeclarationとして解釈され、次の形式である必要があります。
function <name> (<parameter list>) { <function body> }
FunctionDeclarationの名前は必須です。
ステートメントの先頭にない場合、それはFunctionExpressionであり、名前はオプションです。たとえば、次のようになります。
(function () {…})
var a = function () {…};
someFunction(function () {…})
等々。いずれの場合も、(変数などに) 割り当てたり、呼び出したり、他の関数に渡したり、無視したりできる関数への参照を返します。
これは、特定のイベントが発生したときに呼び出される関数を表します。
あなたのコンテキストでは、xmlhttp.onreadystatechange=イベントが発生するとfunction()ブロックが実行されます。
これを次のように書くこともできます
xmlhttp.onreadystatechange=myfunction;
function myfunction()
{
//code to execute
}
onreadystatechangeオブジェクトのプロパティに割り当てられ、次のxmlhttpようにトリガーできるのは通常の機能です。
xmlhttp.onreadystatechange();
チュートリアルを参照してください:
それについてもっと知るために。
あなたは本当に最初に基本を学ぶべきです:)
Javascript は無名関数オブジェクトをサポートしています。イベントに関連するコード ブロックを実行する場合は、関数にラップする必要があります。そのための特定の関数が必要ない (コードを再利用したくない) 場合は、関数を匿名のままにしておくことができます。
xmlhttp.onreadystatechange = function () { ... }
これを行うのと似ています:
function foo() { ... }
xmlhttp.onreadystatechange = foo;
ただし、この場合、必要な場所で foo を再利用できます。
function(){...}名前のない(「匿名」)関数式です。変数に割り当てたり、引数として使用したりする場合は、名前は必要ありません。この例では、その関数オブジェクトをxhrオブジェクトのハンドラープロパティに割り当てます。ここで、コールバックとして使用されます。
関数です。後で実行できるコードのブロックと考えてください。