JavaScript:设置为回调或匿名函数

时间:2018-08-12 19:53:38

标签: javascript ajax callback onload anonymous-function

我的问题

我一直在从两个不同的互联网来源学习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;  

我的问题

第一种和第二种方法的工作原理有什么区别?

然后,有什么理由要比第二种方法使用第一种方法?

2 个答案:

答案 0 :(得分:0)

  

第一种和第二种方法的工作原理有什么区别?

区别在于第一个函数是匿名的函数表达式,而第二个函数是具有名称的函数。两者都是XMLHttpRequest的“ load”事件的事件处理程序。

  

然后,有什么理由要比第二种方法使用第一种方法?

如果您不打算在其他地方重用处理程序,则不需要使用名称声明函数。

这与任何其他编程实践没有什么不同。多次调用一个值时,请使用变量/常量,否则请使用文字。

答案 1 :(得分:0)

函数声明会在当前作用域中创建一个(提升的)变量,该变量与该函数具有相同的名称,并且其值是对该函数的引用。

一个函数表达式只是求值作为对该函数的引用。

因此主要区别在于,在使用handleSuccess的地方,您可以继续在其他地方引用该函数以用于其他目的。