头首先阿贾克斯,他们给了下面的例子:引用函数(例如,在Javascript中)意味着什么?
function getDetails(itemName) {
request = createRequest();
if (request == null) {
alert("Unable to create request");
return;
}
var url= "getDetails.php?ImageID=" + escape(itemName);
request.open("GET", url, true);
request.onreadystatechange = displayDetails;//This references the function below
request.send(null);
}
function displayDetails() {
if (request.readyState == 4) {
if (request.status == 200) {
detailDiv = document.getElementById("description");
detailDiv.innerHTML = request.responseText;
}
}
}
我很好奇,什么样的建筑是request.onreadystatechange = displayDetails;
。这本书说,“这是一个函数的引用,而不是函数调用”。不过我不明白这个真是的意思。我想它会将displayDetails
函数赋值给对象request.onreadystatechange
,但我不明白为什么或何时使用这种构造。
例如,什么是使用这种结构,而不是做类似的优势:
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200) {
detailDiv = document.getElementById("description");
detailDiv.innerHTML = request.responseText;
}
}
}
而且,是一个功能性的语言特性的一个例子吗?
老实说,发布的第一个代码块是sl as的,因为它污染了全球范围。使用命名函数进行回调的原因是,您还需要在别处明确调用该函数。 – Shmiddty
问题的标题说的是Javascript,但是在您说'Head First Java'的问题中。代码看起来像Javascript,而不是Java。那是对的吗? – shargors
IMO它保持干净。虽然上面的人说这个例子有点sl。。你还知道当你写'request.onreadystatechange = function(){...}'时,你实际上正在分配'anonymous' javascript函数的_reference_吗? –