В моем проекте (только в контексте браузера) я хочу использовать инструмент качества кода JS. Я пробовал как jslint
, так и eslint
. Я хочу, чтобы linter помог мне сделать мой код чистым, ясным, защищенным от ошибок и улучшить его общее качество. То, что я не хочу делать, это то, что я не хочу писать какие-то грязные хаки или использовать плохие методы, чтобы сделать литер счастливым.
Меня беспокоит только одна проблема. Оба они сообщили о проблеме, что я использую функцию до ее определения. Очевидно, что в следующем фрагменте кода bar
не будет вызываться перед его определением.
function foo() {
bar();
}
function bar() {
}
foo();
В этом простейшем сценарии я могу просто переместить bar
до foo
. Но бывают случаи, когда это просто невозможно. Первая функция использует вторую, вторая использует третью, а третью использует первую.
Похоже, я могу сделать линт счастливым, объявив все функции перед их определениями, как это.
var foo;
var bar;
foo = function() {
bar();
};
bar = function() {
};
foo();
Вопросы:
- Является ли первый фрагмент кода сломанным? Думаю - не.
- Является ли первый фрагмент кода неприемлемым? Думаю - может быть.
- Хорошо ли организовать код, подобный второму фрагменту (объявить функции перед их определением)?
- Если
yes
, я должен придерживаться этой практики, не так ли? - Если
no
, что является хорошей практикой в отношении этой проблемы? - Является ли эта ошибка-линтер заслуживающим внимания, или я должен просто отключить ее?