Для чего «no-use-before-define» предупреждает об объявленных функциях? - PullRequest
1 голос
/ 07 июня 2019

Меня смущает предупреждение 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 только предупредить меня о первом случае, но считать стиль декларативной функции допустимым?

1 Ответ

2 голосов
/ 07 июня 2019

Цитирование страницы документации правила (выделено мной):

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

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

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