通过将参数作为表达式传递而不是首先将其作为变量是否存在性能问题?

someFunction( x+2 );




var total = x+2;
someFunction( total );


函数呢?

someFunction( someOtherFunction() );

最佳答案

尽管差异很小,但是答案实际上是特定于实现的。 JavaScript引擎几乎可以肯定它们分配方式的不同。但是,我可以告诉您,这些差异最有可能类似于大多数其他语言中的差异,我可以在调试器中检查它们的内存和处理器寄存器。让我们研究一种情况:

var sum = x+2;
someFunction(sum);


这会分配内存以保存总和,只要函数在作用域内,它就一直挂着。如果该函数最终成为一个闭包,那么这可能是永远的。在递归函数中,这可能很重要。

someFunction(x+2);


在大多数语言中,这将在堆栈上计算x + 2并将结果传递给someFunction。没有留下任何记忆。

对于函数返回值,答案将完全相同。

因此,总而言之:


确切答案取决于JavaScript引擎的实现。
您很可能不会注意到性能差异。
当重新使用结果时,或者要在调试器中轻松检查结果时,可能要使用变量。


这主要是个人喜好问题。

10-07 15:58
查看更多