自己呼び出しclosure
関数の奇妙な構文は、本質的に関数自体を呼び出していることを意味するため、self-invoking
. これを示すコードを次に示します。
<!DOCTYPE html>
<html>
<head>
<title>
A Nameless Function that Executes Itself
</title>
</head>
<body onload = "mainMethod();">
<div id = "here"></div>
<script type = "text/javascript">
function mainMethod()
{
var here = document.getElementById("here");
var hello = "Hello World!";
here.innerHTML = function()
{
return hello + "<br />";
}(); // WITH method parentheses -- self-invoking
here.innerHTML += function()
{
return hello;
}; // withOUT method parentheses
}
</script>
</body>
</html>
...上記の 2 番目の関数は、末尾の括弧がないinnerHTML
ため実行されず、関数全体になります。では、標準の Ajax 構文が同じように自己呼び出しを使用しないのはなぜでしょうか? が独自の方法で属性をXMLHttpRequest
処理しているように見えます。onreadystatechange
次に例を示します。
function getStock()
{
var req = new XMLHttpRequest();
var stock = document.getElementById("stock");
req.onreadystatechange = function()
{
if( (req.readyState == 4) && (req.status == 200) )
{
// value of stock
var stockValue = req.responseText;
stock.innerHTML = stockValue;
}
}
req.open("GET", "randomStockValue.php?random=", true);
req.send(null);
setTimeout("getStock()", 1000);
}
終わりの括弧がないことに
注意してください... Ajax 構文と、それが正確に何をしているのかをさらに理解したいので、これを尋ねています。