Меня смущает предупреждение eslint из правила no-use-before-define
:
Это правило имеет смысл избегать ошибок, вызванных выражениями функций, такими как
// Case 1:
// Incorrect code; eslint warns me for good reason:
runMe() // Error: Cannot access 'runMe' before initialization
const runMe = () => { alert('expression, not hoisted') }
Однако при объявлении функций вполне нормально вызывать функцию до ее определения (благодаря механизму подъема JS)
// Case 2:
// Correct code; for what reason does eslint warns me about this?
runMe() // Works!
function runMe() { alert('definition, hoisted') }
Есть ли причина, почему eslint обрабатывает оба случая одинаково (то есть заставляет ли скрипт работать быстрее / отключать подъем / оказывает какое-то иное влияние)?
И второй вопрос: можно ли настроить eslint только предупредить меня о первом случае, но считать стиль декларативной функции допустимым?