我经常看到这样的代码(这不是 D3 特定的东西,这只是一个示例):
svg.append("text")
.text(function() {
return round2DP(d.frequency); // d refers to a data element; d.frequency is a float. round2DP() rounds to 2 decimal places.
}) // etc
为什么要使用匿名函数?为什么不直接写 .text(round2DP(d.Frequency))
呢?它看起来更简单,更易读,对我来说更有意义:为什么要在不需要的地方创建一个不必要的函数呢?但我一直看到这一点。诸如此类的事情背后的原因是什么?
编辑:澄清一下,在这种特殊情况下.text()
可以接受函数和值,因此它不一定需要回调。
最佳答案
Why not just write .text(round2DP(d.frequency))?
自 function(){}
是函数引用并且 round2DP(d.frequency)
是一个函数调用。
在第一种情况下,您传递一个函数参数(尚未执行),在第二种情况下,您传递函数调用的返回值。
这取决于 text
的参数是什么方法期望。如果您text()
方法接受一个函数引用参数,那么你需要选择第一个,否则如果它正在寻找返回值 round2DP(d.frequency)
然后选择第二个。
如果text
接受两者并且都给出相同的输出,然后 which one to choose
将取决于您的具体情况。您可以根据您对可读性和可维护性的偏好在它们之间进行选择。
关于javascript - 对单行代码使用匿名函数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36302042/