Можно ли объявить функцию или метод в Javascript? - PullRequest
2 голосов
/ 13 ноября 2011

JSHint говорит мне, что мои методы не распознаются, если они не определены до их использования.

Я могу попытаться переставить все мои методы по порядку, но я надеюсь, что есть способ избежать предупреждений, "объявляя вперед" методы.

Я не слишком уверен, что такое правильное имя, но я хочу, чтобы интерпретатор знал, что эти функции существуют далее в коде.

Полный отчет здесь - http://www.jshint.com/reports/67008

Спасибо

Ответы [ 2 ]

4 голосов
/ 13 ноября 2011

Я хочу, чтобы интерпретатор знал, что эти функции существуют далее в коде.

Интерпретатор знает , что эти функции существуют ниже вкод.Код должен работать без проблем.Это не нравится только jshint.

Нет ничего плохого в том, чтобы объявлять ваши функции в порядке, который вы считаете полезным и значимым, например, нормально (и полезно) объявлять связанные функции рядом с каждымДругой.Лично я считаю полезным объявить функции типа инициализации страницы в верхней части моего скрипта, даже если они неизбежно будут вызывать другие функции, которые объявлены позже.

Если вы ввели какое-то «предварительное объявление» дляВаш код Я думаю, это усложнит чтение и поддержку вашего кода, потому что, очевидно, тогда вы должны сопоставить предварительные объявления с реальными объявлениями, даже если они будут находиться далеко друг от друга в коде.Когда вы вернетесь на следующей неделе и измените свои функции, вы должны помнить, чтобы обновить обе части кода.Это означает, что вы, скорее всего, будете вносить несоответствия и ошибки.

Итак, суть jshint в том, чтобы сделать ваш код более надежным, и вы наверняка не захотите добавлять некоторые.искусственная конструкция просто для передачи jshint, хотя это сделает код менее надежным в долгосрочной перспективе?

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

0 голосов
/ 13 ноября 2011

Я думаю, что все, что вы можете сделать, это установить undef:false, что приводит к другим проблемам.

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

...