Javascript:从函数返回值的最佳方法/实践是什么?

时间:2014-02-05 19:50:11

标签: javascript function return convention

我试图让我的javascript符合从函数返回值的最佳实践。目前,我声明一个变量,在函数中处理该变量然后返回它。我认为明确陈述事情是一种好习惯,但我想知道这是否只是我头脑中的一个神话,并且有更好的方法。那两种方法,甚至这两种方法都不是最好的?感谢

示例A:

function foo( a ){

    var str = "";

    if (a == "bar"){
        str = "barbar";
    } else {
        str = "foofoo";
    }

    return str;
}

例B:

function foo( a ){

    if (a == "bar"){
        return "barbar";
    } else {
        return "foofoo";
    }
}

3 个答案:

答案 0 :(得分:1)

在示例B中,您可以执行以下操作,这将是我要做的事情,如果您评估为true,则不需要额外的其他内容,因为您将返回:

function foo( a ){
    if (a == "bar"){
        return "barbar";
    }
    return "foofoo";   
}

答案 1 :(得分:1)

在Javascript中, B 的性能提升非常小,例如 A 你有一个额外的变量str,必须在本地查找范围3次(初始化,设置一个或其他值,并返回)。

示例A实际上就是这样的内容(请注意,您实际上无法显式访问本地对象,您自动声明的任何var):

function foo( a ){

    local["str"] = "";

    if (a == "bar"){
        local["str"] = "barbar";
    } else {
        local["str"] = "foofoo";
    }

    return local["str"];
}

然而,你需要多次尝试才能看到差异 - 它几乎可以忽略不计,并且可能在最新的优化Javascript引擎中完全消除(如更好的浏览器中所见)。我很确定Chrome的V8引擎可以。

除此之外,这是一个编码风格的问题 - 许多团队更喜欢 A ,因为你可以在str上设置一个手表并始终知道它的含义。我个人更喜欢 B ,因为它更多spartan因为我发现短路逻辑更容易理解,但许多开发人员不喜欢它,因为如果他们错过早期的return他们可以找到难以理解的错误。

这真是一个'家庭式'问题。

答案 2 :(得分:0)

在你的例子中,我不确定其中任何一个技术上是否更好。一个很好的用例就是在循环内部,如果你得到你正在寻找的结果,那么立即返回值。如果你这样做,你的循环就不必在你已经得到你想要的结果时继续执行。