我一直在从两个不同的互联网来源学习AJAX的基础知识。在发送异步HTTP请求的多步骤过程中,如何在XHR请求对象上调用 .onload
属性,然后将其设置为 1)匿名函数或2)回调(???这就是我认为MDN所说的)。
在.onload
对象上调用ourRequest
属性,并设置为匿名函数:
ourRequest.onload = function() {
// the code goes here
}
在.onload
对象上调用asyncRequestObject
属性,并将其设置为函数的名称(回调 ??):
function handleSuccess () {
// the code goes here
}
asyncRequestObject.onload = handleSuccess;
第一种和第二种方法的工作原理有什么区别?
然后,有什么理由要比第二种方法使用第一种方法?
答案 0 :(得分:0)
第一种和第二种方法的工作原理有什么区别?
区别在于第一个函数是匿名的函数表达式,而第二个函数是具有名称的函数。两者都是XMLHttpRequest的“ load”事件的事件处理程序。
然后,有什么理由要比第二种方法使用第一种方法?
如果您不打算在其他地方重用处理程序,则不需要使用名称声明函数。
这与任何其他编程实践没有什么不同。多次调用一个值时,请使用变量/常量,否则请使用文字。
答案 1 :(得分:0)
函数声明会在当前作用域中创建一个(提升的)变量,该变量与该函数具有相同的名称,并且其值是对该函数的引用。
一个函数表达式只是求值作为对该函数的引用。
因此主要区别在于,在使用handleSuccess
的地方,您可以继续在其他地方引用该函数以用于其他目的。