JavaScript

Как объявить глобальную переменную внутри функции в js?

Kak
Anvar Melis Uulu
Anvar Melis Uulu
1 251
По определению глобальной переменной такое невозможно.
Евгений Варыгин
Евгений Варыгин
23 232
Лучший ответ
Руслан Шарыпов В разных языках по-разному и в JavaScript как раз можно)
Иницилизировать ее без var и тем более let
function myF() {
car = "Audi"; // переменная car, созданная в функции без ключевого слова var
var bus = "Volvo"; // переменная bus
}
// переменная car доступна вне функции
console.log(car); // "Audi"
console.log(window.car); // "Audi"
// переменная bus не доступна вне функции
console.log(bus); // ReferenceError: bus is not defined
>>>
ЗЫ: Но возможно что информация устарела, ибо ни в Хроме, ни в Мазиле этот пример не срабатывает, даже window.car выдает undefined
>>>
Ясно. Вот как надо
function myF() {
car = "Audi"; // переменная car, созданная в функции без ключевого слова var
var bus = "Volvo"; // переменная bus
}
myF();
// переменная car доступна вне функции
console.log(car); // "Audi"
console.log(window.car); // "Audi"
Через var или какой-то из глобальных объектов, можно window, но это костыль. Тема называется "замыкания" и это одна из важных частей для понимания JavaScript, её стоит изучить
Сергей Королёв
Сергей Королёв
50 715
Михаил Борисов При чем тут замыкания?
Сергей Королёв Потому и страдают, потому что ты пытаешься людей учить кто умеет больше тебя, и с пеной у рта будешь доказывать им их глупость, тебя просто на работе терпят, и скорее всего никто не делает в вашей команде код ревью, иначе бы ты понял свой уровень и без меня.
В браузере - так:
window.x = 5;

В Node.js - так:
global.x = 5;

Babel+Webpack вроде умеет из global делать window для браузера. Получается кроссплатформенный код. Но это уже про архитектуру в целом.

Без window и global не стоит делать. Потом спустя время непонятно будет, что за переменная такая. Это неудобно.
Руслан Шарыпов
Руслан Шарыпов
92 464
Сергей Королёв Стоит делать без window и без global, прямое использование этих объектов из кода чревато ошибками, так как любой другой разработчик может в эти переменные что-то да записать, поменяв всё поведение приложения. Вот здесь сказано про необходимость замыканий

https://www.w3schools.com/js/js_best_practices.asp
Другой вопрос - нах?
SU
Shoh Usmanov
11 855