我试图让我的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";
}
}
答案 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)
在你的例子中,我不确定其中任何一个技术上是否更好。一个很好的用例就是在循环内部,如果你得到你正在寻找的结果,那么立即返回值。如果你这样做,你的循环就不必在你已经得到你想要的结果时继续执行。