与否则返回

时间:2013-08-12 07:35:57

标签: javascript function if-statement

这两个函数之间是否有任何性能差异,是否认为更多正确?我缺少最佳做法或经验法则吗? ExampleB对我来说似乎更简洁,因此更具可读性,但逻辑似乎没有紧密联系在一起,因此不那么明确。

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

对战

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

提前致谢!

4 个答案:

答案 0 :(得分:2)

  

被认为更正确吗?是否有最佳实践或规则   拇指我不见了

不需要else。程序员我们很懒,所以第二版更好,更简洁。但是,如果某些内容返回truefalse或者真值或假值,那么您可以返回表达式:

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

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

return something; // Nice
  

两个功能之间是否存在任何性能差异

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

答案 1 :(得分:1)

我总是第二次去。我不认为第二个例子中确实存在任何语义上的困难,而且它的字符数少了一些。遵循“Less Ink”方法,我会选择例B.

那就是说,如果这个例子是针对绝对的初学者程序员,他们可能需要else子句来做它的正面或反面。我想这归结为背景。

enter image description here

性能明智,正如您从上面可以看到的那样。第二个是0.08%最快的,所以不是巨大的性能差异。实际上,这种差异可能基于此代码以外的变量,因此性能差异实际上是0

答案 2 :(得分:0)

  

两个功能之间是否存在任何性能差异

不,不是以任何重要或一致的方式 - 检查jsPerf:When test is true | When test is false

真:

jsPerf results showing it's basically a tie when test is true

题:

jsPerf results showing it's basically a tie when test is false

  

...被认为更正确吗?

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

答案 3 :(得分:0)

您可以使用第二个(如果没有返回任何内容,则删除最后一个没有用处的return语句。)

原因是:
你不必在那里缩进代码,所以它更可能是可读的(总的来说,如果你有一些长行代码)。