2016-03-24 1 views
6

Какое значение всегда возвращает значение («undefined») для функций, не нужно явно возвращать что-либо?Каково значение предложения для правила «последовательного возврата» ESLint?

Почему это правило и какие ошибки его ловят?


Вы можете прочитать о «последовательном возврате» правилах ESLint в here (отвечает «что», а не «почему»).

Вы можете прочитать спекулятивный анализ причины javascript functions implicitly returns undefined здесь, когда переполнение стека.

+0

Значение, зная, что все известные пути из метода что-то вернет. Это проверка безопасности. – epascarello

+0

@epascarello Спасибо, что нашли время, чтобы оставить комментарий! Вот где я в замешательстве с вашим ответом. Javascript-компилятор уже всегда добавляет «return undefined», если вы не укажете. Как явно писать это улучшает кодовую базу? –

ответ

4

Некоторые языки проводят различие между функциями и процедурами. Это не относится к C-alikes, но по-прежнему рекомендуется разрабатывать подпрограммы таким образом.

ЛИНТЕР не хочет, чтобы вы «всегда возвращали что-то». Он просто говорит вам, что если вы создаете функцию (в отличие от процедуры ), она должна возвращать что-то значимое в любом случае (в идеале все возвращаемые значения должны быть одного типа).

Пример:

function is_visible(object) 

является функция, она должна возвращать значение (логическое значение в данном случае) и может быть использована в выражениях. С другой стороны

function make_visible(object) 

это процедура, она не должна ничего возвращать и не могут быть использованы в выражениях - это всегда заявление.

Такая конструкция (и связанное с ним предупреждение ЛИНТЕР) значительно помогает предотвратить ошибки, как это (взято из некоторого случайного интернет страницы):

enter image description here

+0

Спасибо, это определенно помогает. –