发送函数名作为参数与显式将其标识为函数的区别

  • 本文关键字:函数 区别 标识 参数 javascript
  • 更新时间 :
  • 英文 :


对不起,如果标题不清楚,但我不知道正确的术语,所以基本上这之间的区别是什么:

doSomething(servletPath,
function () {
checkErrors();
}, function () {
init();
}, function () {
showErrorMsj();
}
);

:

doSomething(servletPath, checkErrors, init, showErrorMsj);

两者似乎在我维护的旧遗留项目上工作相同,但我想知道是否一个比另一个更受欢迎,以及为什么。

唯一的区别是在参数和this上下文中。如果函数不接受任何参数,或者doSomething不传递任何参数,则代码等效。

假设checkErrors接受了参数,doSomething调用了带参数的函数,那么

function () {
checkErrors();
},

不是

checkErrors,

将导致调用checkErrors时不带参数,而不带doSomething传递的参数。

同样,

function () {
checkErrors();
},

将在没有调用上下文的情况下调用checkErrors(其中的this将是全局对象或undefined)。但是如果你这样做

checkErrors,

doSomething将能够使用不同的调用上下文调用它。(它不一定这样做,但这是可行的)

最新更新