Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Правильное объявление переменных (https://javascript.ru/forum/misc/60598-pravilnoe-obyavlenie-peremennykh.html)

mrbanan 09.01.2016 22:07

Правильное объявление переменных
 
Переменная объявляется
var name;
В дальнейшем используется name = 5; (уже без var)
Если переменная у меня впервые появляется внутри цикла или другой подобной структуры типа setInterval то корректно объявить её с var до цикла, а внутри цикла только перезаписывать?

Просто иногда вся работа идёт внутри цикла и тогда до мне надо кучу переменных объявить...

yazonnile 09.01.2016 22:17

корректно

Rise 09.01.2016 22:26

mrbanan, зависит от областей видимости, например, в ES6 цикл имеет свою область видимости, в ES5- не имеет. А так все var-ы всплывают при входе в scope, как и объявления функций, в этом суть var-а.

mrbanan 09.01.2016 22:32

Rise я чё-то в этих ES5, ES6 разобраться не могу, вот я пишу на JS сейчас по какому стандарту я пишу?
Или тогда так переформулирую: как писать наиболее безопасно что бы избежать проблем с ошибкой переопределния переменных?

Rise 09.01.2016 22:49

mrbanan, ES6, остальное ES5-
Цитата:

Сообщение от mrbanan (Сообщение 403103)
как писать наиболее безопасно что бы избежать проблем с ошибкой переопределния переменных?

От scope зависит я же написал, учись определять его...

ruslan_mart 10.01.2016 06:23

Цитата:

Сообщение от mrbanan
то корректно объявить её с var до цикла, а внутри цикла только перезаписывать?


//Правильно
var foo;

for(var i = 0; i < 10; i++) {
    foo = 'bar';
}


//Правильно (упрощённо)
for(var foo, i = 0; i < 10; i++) {
    foo = 'bar';
}


//Неправильно (хоть и будет работать)
for(var i = 0; i < 10; i++) {
    var foo = 'bar';
}



//ES6:
for(var i = 0; i < 10; i++) {
    let foo = 'bar';
}



А вот в setInterval можно, так как там функция, а это значит, что там уже своя область видимости. ;)


Часовой пояс GMT +3, время: 05:47.