доступ к глобальным переменным во вложенных функциях

#javascript #function

#javascript #функция

Вопрос:

Мне нужно получить доступ к глобальным переменным во вложенной функции, как бы я это сделал?

 let x = 0
function one() {
    console.log(x)
}
function two() {
    two()
}  

должен войти 0, но выдает ошибку «x не определено»

Комментарии:

1. Вы не вызвали ни одну из функций…

2. во второй функции это должно быть one (), а не two()

3. Вам все еще нужно вызвать two() .

4. Вы бы не получили эту ошибку с опубликованным вами кодом. Вы получите какую-то ошибку, связанную со стеком вызовов, поскольку у вас бесконечная рекурсия.

5. @lusitanica Это необязательно, хотя некоторые (я полагаю, большинство) люди считают плохой практикой их не включать (также может привести к ошибкам / нежелательному поведению в некоторых конкретных случаях).

Ответ №1:

Ваша функция two вызывала саму себя — вам нужно вызвать one в two . Вы также должны вызвать two :

 let x = 0
function one() {
    console.log(x);
}
function two() {
    one();
}
two();  

Комментарии:

1. Тем не менее, это так.

2. @Brent: Здесь это, очевидно, работает, как вы можете убедиться сами. Если у вас это не работает, значит, ваш код / среда отличаются. Но мы не сможем вам помочь, если не будем знать об этом.

3. о, подождите, я только что понял, что определяю функции в двух разных сценариях, поэтому один вызывается до того, как он инициализирует x.

4. Я не знаю, как я этого не видел

5. @BrentTrenholme Это должно работать до тех пор, пока x ( let x = 0 здесь) определено перед вызовом two(); .