Ранний возврат из функции: ноль, явный неопределенный, неявный неопределенный? - PullRequest
0 голосов
/ 30 сентября 2018
var input = document.getElementById("input").value;

function sendRequest {
  if (Validate.isNumber(input)) {
    input.focus();
    return;
  }

  // or

  if (Validate.isNumber(input)) {
    input.focus();
    return null;
  }

  // or

  if (Validate.isNumber(input)) {
    return input.focus();
  }

  // start Ajax call
  var xhttp = new XMLHttpRequest();
  ...
}

Выше 3 функции имеют одинаковый результат (если сбой проверки завершает выполнение функции) ... Так в чем же разница?Какой из них лучше?

1 Ответ

0 голосов
/ 30 сентября 2018

EsLint имеет хорошее правило: согласующий-возврат

Требует, чтобы операторы возврата указывали всегда или никогда не указывали значения.Если какие-либо пути к коду в функции возвращают значение явно, но некоторые пути к коду не возвращают значение явно, это может быть ошибкой при наборе, особенно в большой функции

Руководство по стилю в Airbnb JavaScript

// No implicit return with side effects
function foo(callback) {
  const val = callback();
  if (val === true) {
    // Do something if callback returns true
  }
}

Так что же нам возвращать даром?

В JavaScript undefined означает, что переменная была объявлена, но ей еще не присвоено значение.

null - это значение присваивания.Его можно присвоить переменной как представление без значения.

null vs undefined

TLDR : return null.

PS также взгляните на Шаблон нулевого объекта .Если путь успеха возвращает Promise, то отрицательный путь может return Promise.resolve(null) - если потребитель функции уже проверил значение внутри Promise и ему все равно, почему оно пустое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...