jsperf被损坏了,因为您在测试边界上积累了事件处理程序。在其他WROD中,首先进行的任何测试都将是“最快的”。
测试的整个前提是荒谬的,如果其他所有内容都相等,则具有名称和没有名称的函数的函数之间没有区别。当您错误地设置JSPERF时,您只会看到差异。当您不断为他们获得平等的结果时,您就会知道您正确设置了它 - 但是您会从常识中知道这一点:)
解决方案
jsperf被损坏了,因为您在测试边界上积累了事件处理程序。在其他WROD中,首先进行的任何测试都将是“最快的”。
测试的整个前提是荒谬的,如果其他所有内容都相等,则具有名称和没有名称的函数的函数之间没有区别。当您错误地设置JSPERF时,您只会看到差异。当您不断为他们获得平等的结果时,您就会知道您正确设置了它 - 但是您会从常识中知道这一点:)
其他提示
匿名函数是作为参数传递的,因此要解决其引用,范围链并不能完全回到创建它的父函数 - 它仅作为参数存在。另一方面,为了解决对命名函数的引用,范围链一直遵循返回到创建命名函数的父函数闭合。
编辑:我试图证明这一点,但似乎匿名函数实际上并没有更快地解决 - http://jsperf.com/scope-chain-anonymous-function
编辑: 如果您打电话 a.off();
要删除任何事件处理程序,命名功能将比解决匿名函数一样快或更快。