ESLint的"一致回报"规则的价值主张是什么?

And*_*ght 7 javascript eslint

总是为函数返回值("undefined")的值是什么,不需要显式返回任何内容?

为什么这是一个规则,它捕获了什么错误?


你可以在这里阅读有关ESLint的"一致回报"规则(回答"什么",而不是"为什么").

您可以阅读一个推测性的分析,为什么javascript函数在堆栈溢出时隐式返回undefined.

geo*_*org 4

有些语言区分函数和过程。在 C 语言中情况并非如此,但以这种方式设计子例程仍然是一个好主意。

linter 不希望你“总是返回一些东西”。它只是告诉你,如果你设计一个函数(而不是一个过程)),它在任何情况下都必须返回有意义的内容(理想情况下,所有返回值必须具有相同类型)。

例子:

function is_visible(object)
Run Code Online (Sandbox Code Playgroud)

是一个函数,它应该返回一个值(在本例中为布尔值)并且可以在表达式中使用。另一方面

function make_visible(object)
Run Code Online (Sandbox Code Playgroud)

是一个过程,它不应该返回任何内容,也不能在表达式中使用 - 它始终是一个语句。

这样的设计(以及相关的 linter 警告)极大地有助于防止像这样的错误(取自一些随机的互联网页面):

在此输入图像描述