匿名函数在JavaScript中是不好的做法吗?

时间:2010-08-11 19:52:02

标签: javascript anonymous-function

我正在阅读在javascript中使用匿名函数是不好的做法,因为它可以使调试变得痛苦,但我还没有看到这个。 JavaScript中的匿名函数是否真的很糟糕,如果是这样,为什么?

7 个答案:

答案 0 :(得分:12)

不,匿名函数遍布整个网络的JavaScript中使用。它可能会使调试变得更加困难,但不足以说它们不应该被使用。

例如,JQuery广泛使用它们。

有很多时候你想在正式声明的函数上使用它们,例如当你想限制它们的范围时。

答案 1 :(得分:11)

我将在这里反对流程并说明匿名函数确实是不好的做法,即使它们被广泛使用。

1)匿名函数无法重用。

2)根据定义,匿名函数没有名称,因此不描述它们的作用。也就是说代码不是自我记录。

3)无法使用单元测试框架单独测试匿名函数。

4)我个人认为他们使代码更难以阅读和调试。虽然您的经历可能会有所不同。

我认为有些情况下匿名函数是最佳选择,作为一般规则,为了避免上述缺点,我几乎总是命名我的函数。

答案 2 :(得分:7)

我会说相反,lambdas(别名)使一些表达更加简洁。如果您将多个事件处理程序绑定到多个事件,那么为每个事件处理程序提供一个函数名称会很繁琐,例如。

它比没有更有帮助和节省时间,即使它使调试变得更加困难但我很少调试,因为函数是匿名的。并且您应该使用JSLint在编码时让您的生活更轻松。

答案 3 :(得分:5)

绝对不是,lambda函数在整个地方使用 ,几乎无处不在。

答案 4 :(得分:4)

仅仅因为每个人都使用它们并不能使它们成为好习惯(每个人都记得使用 table 元素进行布局?)。但是,它们很棒,因为它们可以帮助澄清和简化代码,减少出错的机会。

但是,匿名函数不应该太复杂,以至于调试变得困难。在这种情况下,或许最好创建一个新功能。

答案 5 :(得分:-1)

这是我的浏览器控制台:

// Bad
poopy = function(){}
// function (){}
groupy = poopy;
// function (){}

// Good
droopy = function loopy(){};
// function loopy(){}
floupy = droopy;
// function loopy(){}   

想象一下,您正在调试某些内容,并且您有一个名为groupy的函数名称。您键入它的名称以获取更多信息。如果该函数已设置为坏部分,则您不知道原始声明是什么。但是,如果您定义了函数名称,就像在Good部分中那样,那么您将始终拥有原始函数名称的跟踪。

答案 6 :(得分:-3)

匿名函数表达式是JavaScript中的最佳实践。