Рекомендация по библиотеке JS: возвращать неопределенное значение или выдавать ошибку при неправильном вводе функции? - PullRequest
4 голосов
/ 31 декабря 2011

При кодировании библиотеки в JavaScript, каков самый стандартный (самый дружественный?) Способ обработки неверного ввода в функцию?Моя интуиция говорит мне, что возвращение undefined совершенно нормально, но действительно ли это полезнее, вместо этого выдавать ошибку?Или это действительно не имеет значения?

Я также мог бы видеть возвращение false, null или даже -1, но я не думаю, что это было бы столь ожидаемым.

(Если этот вопросСлишком субъективно, я рад, что могу это сделать.)

Ответы [ 3 ]

4 голосов
/ 31 декабря 2011

Я думаю undefined хорошо, но имейте в виду, что:

JavaScript не имеет типа void, поэтому каждая функция должна возвращать значение. Значение по умолчанию не определено, за исключением конструкторов, где возвращаемое значение по умолчанию - это.

Так что вам не нужно явно возвращать undefined. Это будет по умолчанию.

см. http://javascript.crockford.com/survey.html

1 голос
/ 31 декабря 2011

Преимущества исключений:

  • Если ошибка является редким явлением (не ожидается при нормальной работе), то вызывающему коду может быть проще и быстрее перехватывать исключения в одном месте более высокого уровня, чем тестировать возвращаемые значения после каждого вызова API.

Недостатки исключений:

  • Поймать исключение намного медленнее, чем тестировать возвращаемое значение, поэтому, если ошибка встречается часто, исключения будут намного медленнее.
  • Если вызывающий код будет проверять ошибки при каждом совершаемом ими вызове API (и не перехватывать исключения на более высоком уровне), исключения являются более трудной задачей для написания каждого отдельного вызова API, чем просто проверкой возвращаемого значения.
0 голосов
/ 31 декабря 2011

возможно, очевидно Если вы расширяете среду - продолжайте их практику как минимум

Быстрый ответ . Если это javascript в браузере, то undefined - ОК, если это javascript на сервере, выведите ошибку.

Улучшен Позвольте пользователю библиотеки выбрать поведение в качестве опции, будь то библиотека глобальная или для каждого объекта в отдельности.

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