作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
以jQuery框架为例,如果你运行这样的代码:
$(document).ready(function init() { foo.bar(); });
您在 Firebug 中获得的堆栈跟踪将如下所示:
init()
anonymous()
anonymous([function(), init(), function(), 4 more...], function(), Object name=args)
anonymous()
anonymous()
如您所见,它的可读性不是很好,因为您必须单击每个函数才能了解它是什么。匿名函数还会在探查器中显示为 (?)()
,并且它们会导致“cannot access optimized closure”错误。在我看来,这些都是避免它们的充分理由。然后是 ECMAScript 5 将在其严格模式下弃用 arguments.callee
,这意味着将无法使用它来引用匿名函数,从而使它们不太适合 future 。
另一方面,使用命名函数会导致重复,例如:
var Foo = {
bar: function bar() {}
}
function Foo() {}
Foo.prototype.bar = function bar() {}
鉴于命名函数提供的调试便利性,我认为这种重复是合理的,并且匿名函数在像 jQuery 这样的优秀框架中的流行是一种疏忽,我的想法是否正确?
最佳答案
我同意在 JavaScript/EMCAScript 中使用匿名方法有一些缺点。但是,不要忽视它们应该如何使用。对于要传递给另一个函数的简单的衬里,它们通常非常好。
关于javascript - 命名函数在 JavaScript 中被低估了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1629918/
我对高估/低估这两个术语感到困惑。我完全了解 A* 算法的工作原理,但我不确定高估或低估启发式算法的效果。 取直接鸟瞰线的平方是否高估?为什么它会使算法不正确?所有节点都使用相同的启发式。 直接鸟瞰线
我是一名优秀的程序员,十分优秀!