Javascript if..else vs if(){return}

Javascript if..else vs if(){return},javascript,Javascript,在下面的示例中——假设返回值不重要——是否有理由选择其中一种方法而不是另一种方法 // Method 1 function (a, b) { if (a == b){ // I'm just interested in // the stuff happening here } else { // or here } return true; } // Method 2 function (a, b) { if (a == b){ // I'm

在下面的示例中——假设返回值不重要——是否有理由选择其中一种方法而不是另一种方法

// Method 1
function (a, b) {
  if (a == b){
    // I'm just interested in
    // the stuff happening here
  } else {
    // or here
  }
return true;
}

// Method 2
function (a, b) {
  if (a == b){
    // I'm just interested in
    // the stuff happening here
    return true;
  }
  // or here
  return true;
}

我更喜欢方法1,因为它读起来比较容易混淆。另外,减少重复代码。

我建议使用方法1,因为它更具可读性和自我记录能力。

我会根据代码的清晰性和可读性做出决定,即:

  • 如果在if块之后需要在块中执行更多操作,请选择方法1
  • 当您只需要两块代码时,选择方法2,这样读起来更清晰
  • 如果您明确地认为如果没有“else”这个词,您的读者将无法理解您的密码,请再次选择方法1;当块大于几行时,这种情况很常见

许多今天的程序员认为读写比较少,我同意。在这种情况下,一般首选使用第二种方法。

此处的可读性实际上取决于函数的角色

如果这个函数总是返回true,那么我更喜欢方法1,因为它只在一个地方返回,很容易看出它总是true

在上述情况下,方法2更容易混淆。它在多个地方返回,因此更加混乱。考虑开发人员不必要地遍历可能的分支,然后查看它们如何影响返回值。在这个简单的例子中,这没什么大不了的,但是当你得到更详细的条件时,我真的会避免这种方法

如果if块中的代码很少,我只会使用方法2。比如一些可以处理边缘案件的事情


希望这能有所帮助。

似乎最佳实践(主要是我工作过的地方)是在方法或函数的顶部设置默认值,并且只有在出现某些情况时才更改这些值。因此,不需要使用else,因此首选方法2

由于示例是JavaScript,因此需要特别注意代码大小。因此,方法2将为相同的功能创建更少的代码,从而进一步完善其参数


但是,如果您有两种以上的可能情况,则无法避免使用else或else if。然而,在这些情况下,我工作过的大多数地方更喜欢使用开关盒。

任何现代浏览器的解释器都应该消除任何一个方向的性能优势


有几个原因没有提到方法1更可取。拥有一个单一的退出点,使得将来需要两个分支共同操作的任何修改都变得更容易,也不太可能出现错误(因为作者错过了早期返回。类似地,在某些情况下,通过提供一个放置断点或警报()的公共位置,它使调试更容易.

您可能希望使用
=
而不是
=
,因为您是在比较,而不是设置值。;)还有一个简单的
返回a==b
有时会起作用。出于好奇,为什么要编写一个总是返回true或返回值没有意义的方法?如果返回值不重要,那么为什么显式返回呢?只是让代码“失效”。
a===b
a==b
更可取,以防止类型强制。我只是想表明,我真的不在乎结果,它就像总是一样。这确实是一种风格,一个更具声明性(如果有的话),另一个更简洁。我也更喜欢第二个,我不同意。拥有多个return语句会使代码更难理解(想想递归!),尤其是在可以避免的情况下。在这种情况下,我们总是返回true!你是对的,我的意思是方法1的缺陷是它更具可读性。更多的嵌套通常会降低代码的可读性,这被认为是不好的做法。因此,我认为省略else条件是更好的做法。但是如果你想在他的代码中编辑,你能轻松理解业务逻辑吗?!阅读多层嵌套if/else更难理解业务逻辑,IMHO。我完全理解您的观点,但可能是因为在开发过程中,我使用if else作为我的选项,因此我习惯于更快地理解它。每个人都有不同的品味:)