【发布时间】:2012-01-01 08:06:24
【问题描述】:
我很好奇these jsperf results。它们似乎证明了直接函数调用比使用.call 或.apply 调用的相同函数要快得多。 (.call 和 .apply 之间的差异更让我惊讶。)你能解释一下这些结果吗?
更新:Here is a jsperf 有人离开了测试 .apply 没有第二个数组实例化。
【问题讨论】:
-
好吧,一方面,至少还有一个函数调用(对“.call()”或“.apply()”的调用)...
-
...事实上,通过“.call()”或“.apply()”的速度大约是您预期的一半执行两个函数调用,而不是一个。
-
.apply较慢,因为您也在构造一个数组。 -
@Pointy 是一个不错的经验解释,除了 according to Yehuda Katz、
function.call()和obj.func()应该与[[Call]]的相同内部调用脱糖。所以无论哪种方式都应该只有一个电话。 -
在
iPad中,apply和call的表现是一样的。