DrunkMaster
@DrunkMaster

Вопрос по var в JavaScript?

Я могу ошибаться, но как я понял в JS используется ключевое слово var для объявления переменной но использовать его нужно только в первый раз, например:
var a = 1;
a = 2
Если надо объявить переменную внутри цикла стоит ли делать var a = ''; до цикла и уже внутри переопределять, или лучше делать var a = 1 сразу внутри цикла (и каждую итерацию она будет переопределяться)
  • Вопрос задан
  • 1040 просмотров
Решения вопроса 3
victorzadorozhnyy
@victorzadorozhnyy
вы говорите про область видимости. если внутри, то и используете внутри.
let a='man'
()=>{
    let b='hi'
    console.log(b)//hi 
    console.log(a)//man
}
    console.log(b)//Uncaught ReferenceError: b is not defined
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Объявление переменной через var всегда «сползает» наверх функции – это называется var hoisting («поднятие или всплытие переменных»).

Объявление переменных (как и любые другие объявления) обрабатываются до выполнения кода. Где бы не находилось объявление, это равнозначно тому, что переменную объявили в самом начале кода.

Т.е. ваш код
for( /*...*/ ) {
  var i = 3;
  // ...
}

преобразуется в
var i;
// ...
for( /*...*/ ) {
  i = 3;
  // ...
}
Ответ написан
Комментировать
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Все очень просто. Любая переменная должна объявляться через var. Запись a=2 в strict mode выдаст ошибку.
А в обычном режиме броузер подставит переменную как свойство глобального объекта. То есть: a === window.a
Далее, про скопы.
Если переменная объявляется вне функции, она попадает также в свойство глобального объекта. Если в функции - в область видимости этой функции. То есть:
var a=1;
function f() {
var b=2;
window.c=3;
console.log(a,b,c);
}

console.log(a,b,c);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы