1

Is there any performance difference between the two functions, is one considered more correct? Is there a best practice or rule of thumb I am missing? ExampleB seems more succinct to me and thus more readable, yet the logic does not seem as tightly tied together and is therefore not as explicit.

function exampleA() {
  if( true ) {
    return //do this;
  } else {
    return //do that;
  }
};

Versus

function exampleB(){
  if( true ) {
    return //do this;
  }
  return //do that;
};

Thanks in advance!

4

4 回答 4

2

一个被认为更正确吗?我是否缺少最佳实践或经验法则

不需要else. 程序员我们比较懒,所以第二个版本更好,更简洁。但是,如果某些东西返回trueorfalse或一个真值或假值,那么您可以返回表达式:

if (something) { // Meh
  return true;
} else {
  return false;
}

if (something) return true; // OK
return false;

return something; // Nice

这两个功能之间是否有任何性能差异

我认为性能无关紧要,它更多的是关于最佳实践,并尽可能使用早期返回使您的代码更简洁。

于 2013-08-12T07:38:38.743 回答
1

我总是去第二个。我不认为第二个例子真的有任何语义上的困难,只是少了几个字符。遵循“少墨水”的方法,我会选择示例 B。

也就是说,如果这个示例是针对绝对初学者的程序员,他们可能需要该else子句来判断它的正面或反面。我想这取决于上下文。

在此处输入图像描述

从上面可以看出,性能方面。第二个是最快的0.08%,所以没有巨大的性能差异。事实上,这种差异可能是基于此代码以外的变量,因此性能差异实际上是有效的0

于 2013-08-12T07:39:00.863 回答
0

这两个功能之间是否有任何性能差异

不,不是以任何重要或一致的方式 - 检查 jsPerf:当测试为真| 当测试为假时

真的:

jsPerf 结果表明,当测试为真时,它基本上是平局

错误的:

jsPerf 结果表明,当测试为假时,它基本上是平局

...被认为更正确吗?

这是一个风格问题。风格问题不适合 SO 的格式。

于 2013-08-12T07:40:29.137 回答
0

您可以使用第二个(并删除最后一个没有任何目的的 return 语句,如果它什么都不返回)。

原因是:
您不必将代码缩进那里,因此它更容易阅读(总体而言,如果您有一些长代码行)。

于 2013-08-12T07:50:28.893 回答