【发布时间】:2019-09-03 13:39:44
【问题描述】:
通常,在 Javascript 中,当我想将匿名/内联函数作为参数传递给另一个函数时,我会执行以下操作之一。
someFunctionCall(function() {
//...
});
someFunctionCall( () => {
//...
});
不过,我最近继承了一个代码库,它使用 named 函数作为内联参数,就像这样
someFunctionCall(function foo() {
//...
});
我以前从未见过这种语法。该函数仍然似乎是匿名的——在调用或被调用范围内都没有定义foo 函数。这只是风格问题,还是可以使用命名函数(上面的foo)作为匿名函数来改变该程序的行为或状态?
这是专门针对 NodeJS(不是基于浏览器的程序)程序的,我对使用函数作为参数的特定行为特别感兴趣。也就是说,来自跨平台和运行时的行为信息是受欢迎的。
【问题讨论】:
-
堆栈跟踪。如果回调抛出,该名称将显示在跟踪中。至少在浏览器中,没有在node中测试过。
-
tfw 你突然意识到你没有这样做会导致其他开发人员陷入可避免的地狱。谢谢!
-
函数名也可以像一个自我记录
-
您也可以将它们用作状态的持久但非全局对象存储。
(function me(x){ me.lastX=x; }) -
另外,我建议您了解函数和函数表达式之间的区别——看起来相同但不完全一样。
标签: javascript node.js closures anonymous-function function-expression