ESLint выбрасывает no-undef, даже если переменная находится в операторе IF - PullRequest
0 голосов
/ 16 марта 2020

Я использую React и не могу создать свое приложение, пока у меня есть неопределенная переменная. Я использую эту переменную только в выражении IF (если оно определено, используйте его).

if (something)
   const newItem = 'wow!';

if (typeof newItem === "undefined")
    console.log('newItem undefined')   
else
    console.log(newItem); //ESLint: Line YY:XX: 'newItem' is not defined  no-undef  

Как мне избежать такого поведения?

1 Ответ

3 голосов
/ 17 марта 2020

Оператор if создает лексическую область видимости. Фактически, каждый раз, когда вы видите {} в javascript, это создает область. Это означает, что переменные, объявленные с let или const в этой области, не могут быть доступны вне этой области.

if (something) {
   const newItem = 'wow!';
   // newItem exists here
}
// newItem does not exist here

Что вы хотите сделать, это объявить переменную в той области, где вы хотите получить к нему доступ, а затем просто присвоить эту переменную в вашем if утверждении:

let newItem;
if (something) {
    newItem = 'wow!';
}
// newItem exists here, and has a value of either 'wow!' or undefined.

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

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