在Javascript中
为什么有必要将回调函数作为参数传递给调用函数,而它已在全局范围内可用?
答案 0 :(得分:0)
如果我正确理解你的问题,你会遇到类似这样的情况:
function gotUserName(name) {
alert('User name is: ' + name);
}
function getUserName(id) {
getAjax('/getuser/' + id, gotUserName);
}
function getAjax(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
callback(xhr.responseText);
}
};
xhr.open("GET", url, true);
xhr.send();
}
您要问为什么必须将gotUserName
作为回调传递,然后拨打callback
,而不是直接从gotUserName
功能调用getAjax
?< / p>
虽然这肯定是可能的,但简单的答案是getAjax
可以用于更多的ajax请求,而不仅仅是获取用户名。您传递回调不是为了使其可用,而是为了避免在getAjax
内对其进行硬编码。