当前位置: 首页 > 知识库问答 >
问题:

“return”后不需要“else”。(没有其他回报)

齐昊苍
2023-03-14

我正在使用es lint清除代码中的错误。我遇到了这个错误:

“return”后不需要“else”。(没有其他回报)

} else {

我总是在返回后使用其他语句。有什么我可能忽略了的吗?

if (cctot <= 3 && cctot > 0) {
    alert('Credit under $3.00 not allowed');
    return Number.MIN_SAFE_INTEGER; // important to return 0 so we can check for these conditions for validation
} else {
    cctot *= -1;
}
return precise(cctot);

共有3个答案

柴修筠
2023-03-14

虽然规则正确地指出,else块是不必要的,这是一种样式偏好,但我会为可读性和最重要的可扫描性添加额外的考虑。

对于编写这段代码的开发人员和解释它的机器来说,这可能是一个风格点,仅此而已。但是对于需要修复错误、增强功能、进行代码审查等的开发人员来说,快速扫描代码并查看其他块的能力有助于识别逻辑分支。

在几行独立的代码中很容易看出意图,但是在数百行具有if的代码中,其他块可以作为有用的标识符,很像其他常见的视觉实践,如缩进、换行和命名约定。

闻人越
2023-03-14

这是一种代码风格偏好。您不需要else,而是可以将else代码直接放在if下面。这是因为如果if成功,那么函数就结束了,因此无论如何都不会到达else代码。

所以这个:

if (condition) {
  return foo;
} else {
  // do bar
}

return baz

相当于:

if (condition) {
  return foo;
}

// do bar

return baz

这种风格在不同的编程社区中似乎有所不同。Go开发人员几乎总是会省略else,而我已经看到更多的JS开发人员包含它。

虽然我更喜欢省略其他,但这又是纯粹的偏好问题。不要让它让你太担心。人们可能会对这种事情变得教条,但这真的没那么重要。

冷善
2023-03-14

这基本上是说,如果在if部分中有return,则if语句的else部分是不必要的。这就是它所期望的:

if (cctot <= 3 && cctot > 0) {
      alert('Credit under $3.00 not allowed');
      return Number.MIN_SAFE_INTEGER; // important to return 0 so we can check for these conditions for validation
}
cctot *= -1;

一般来说,这:

if (condition) {
  return something;
} else {
  // do another thing
}

return anotherThing;

类似于:

if (condition) {
  return something;
}

// do another thing
return anotherThing;

在使用return语句执行if之后,不需要使用else部分,因为if下面的代码只有在所述条件未满足时才会运行。

 类似资料:
  • 我一直在寻找答案,但我没有找到它,我需要在我继续我的测试之前弄明白。 我正在通过安装bash创建一个基于Alpine的映像,如下图所示: Hello.sh 我可以在不向docker-compose.yml添加的情况下访问,所以Alpine的映像中一定有我不理解和希望理解的东西。

  • 今天在review以前的代码的时候,遇到了一个比较奇怪的现象,函数的有返回值,但只在if后面有return,else后面忘写了。但这个版本的代码已经调试验证通过了,没有问题的,这就很怪异。 考验一道题 下面这道题Print的内容是什么? # include <iostream> class Test { public: Test (int xx, std::string yy) {

  • 我使用pyenv来管理python安装和虚拟环境。我在Mac(Catalina)上安装了几个python。 < li >系统python(usr/bin中的python 2.7) < Li > usr/bin中的python 3.9(来自python.org/downloads中的默认安装程序) < Li > python 3.9 in/opt/anaconda 3/bin/python 3(来自

  • 我有一个Laravel项目,我想使用我自己的fork(它合并了几个pull请求)。下面的作曲家。json按预期工作(它从我的repo获取主分支): 但是,当我添加一个依赖于Laravel提供的照明组件的软件包时(例如,,它需要与我的fork提供的版本相同),我最终会得到如下结果: > 安装gexge/laravel框架(4.0.x-dev 87556b2) 阅读/Composer/cache/fi

  • 我仍然是Java的新手,我正在努力使这个程序适合我的任务。 问题是: 杰夫在你家附近经营着一家当地的零售店。他已与您签订合同,让您创建一个交互式应用程序,以帮助他增加员工工资。创建一个名为 Details 的类,该类将包含员工 ID 号、名字、姓氏和薪水的获取和设置方法。包括一个名为getUpdateSalary()的方法,该方法将使员工的薪水增加10%。在您的主类中,包括一个名为 () 的静态方