Возможны ли объявления методов (не определения) в JavaScript?

#javascript #jshint

#javascript #jshint

Вопрос:

Могу ли я объявлять методы, которые будут использоваться позже в JavaScript, аналогично прототипам функций C .

Комментарии:

1. Для чего они вам понадобятся?

2. Как насчет того, чтобы попытаться заставить jshint принимать идеально подходящий код (запрашивать какое-то непонятное нестандартное прямое объявление для всего определенно не является хорошей практикой)? В качестве альтернативы, переключитесь на какой-нибудь другой lint, если он настолько поврежден.

3. Actually…it делает jshint непригодным для использования .. это серьезная причина… Мне действительно нужно это исправить

4. И мне нравится корреляция с C

5. Поскольку вы можете объявлять и повторно объявлять функции в JavaScript, я не понимаю, почему вы не могли бы объявить пустую функцию с заданной сигнатурой аргумента (или, если хотите, просто выдать исключение, чтобы было ясно, что это прототип, который не должен использоваться), а затем объявить реальную функцию позже. Однако мне непонятно, что вы этим получаете. В чем именно проблема JSHint с вашим кодом?

Ответ №1:

Нет, в Javascript нет такого понятия, как объявления функций. Не имеет значения, какие параметры вы определяете в функции, она может быть вызвана с любым набором значений. Пример:

 function test(a, b) {}

test(); // values are not required for all parameters

test(1, 2, 3, 4); // values are not limited to the number of parameters
  

Другое дело, как заставить код проходить более строгую проверку. Затем вы должны определить функции точно так, как вы их используете. Цель проверки в этом случае — не допустить неправильного использования отсутствия объявлений в языке, поскольку это приводит к тому, что код становится более сложным для понимания.

Комментарии:

1. @stack.user. 1. Если вы хотите проверить код, вы должны проверить весь код, иначе вы, естественно, получите ошибки для неопределенных идентификаторов. Немного очистив код, вы можете свести предупреждения к нескольким, на которые следует обратить внимание: jshint.com/reports/71003

2. Примечание: Я объявил множество идентификаторов в начале скрипта, чтобы избежать предупреждений для них.