#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();
.