从函数返回内部变量与直接返回值之间是否存在差异?

时间:2015-10-06 07:37:55

标签: javascript performance

假设我们有两个函数,它们返回一个大对象。一个直接返回数据,另一个将其分配给内部变量并返回此变量。有没有人知道是否会分配堆内存以及性能和原因?浏览器引擎是否会以某种方式优化代码,因此最终可能会相同?

function foo() {
    return getSmth();
}

function foo() {
    var bar = getSmth();
    return bar;
}

1 个答案:

答案 0 :(得分:3)

堆分配几乎是一样的。在第二个示例中,假设没有优化,如果内部函数的返回值是一个对象,那么您正在复制对bar的额外引用。如果返回值是基本类型,那么您将复制用于保存该值的字节数。在任何一种情况下,额外的引用/值都会被丢弃,并且万一它存储在堆上变得可用于垃圾收集。

在编译过程中,javascript引擎可能会优化条形变量。