JavaScript
Как объявить глобальную переменную внутри функции в js?
Kak
По определению глобальной переменной такое невозможно.
Руслан Шарыпов
В разных языках по-разному и в 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"
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, её стоит изучить
Михаил Борисов
При чем тут замыкания?
Сергей Королёв
Потому и страдают, потому что ты пытаешься людей учить кто умеет больше тебя, и с пеной у рта будешь доказывать им их глупость, тебя просто на работе терпят, и скорее всего никто не делает в вашей команде код ревью, иначе бы ты понял свой уровень и без меня.
В браузере - так:
window.x = 5;
В Node.js - так:
global.x = 5;
Babel+Webpack вроде умеет из global делать window для браузера. Получается кроссплатформенный код. Но это уже про архитектуру в целом.
Без window и global не стоит делать. Потом спустя время непонятно будет, что за переменная такая. Это неудобно.
window.x = 5;
В Node.js - так:
global.x = 5;
Babel+Webpack вроде умеет из global делать window для браузера. Получается кроссплатформенный код. Но это уже про архитектуру в целом.
Без window и global не стоит делать. Потом спустя время непонятно будет, что за переменная такая. Это неудобно.
Сергей Королёв
Стоит делать без window и без global, прямое использование этих объектов из кода чревато ошибками, так как любой другой разработчик может в эти переменные что-то да записать, поменяв всё поведение приложения. Вот здесь сказано про необходимость замыканий
https://www.w3schools.com/js/js_best_practices.asp
https://www.w3schools.com/js/js_best_practices.asp
Другой вопрос - нах?
Похожие вопросы
- Помогите с JavaScript (локальные/глобальные переменные/функции)
- Локальные и глобальные переменные
- Зачем нужны функции в js?
- Как вернуть что-нибудь из вложенной функции в JS
- Как указать интерпретатору, что я хочу объявить регистровую переменную?
- Как сохранить переменную внутри браузера до следующей перезагрузки браузера ?
- глобальные/локальные переменные в JavaScript
- Можно ли именовать переменную в JS?
- Не правельно складываются переменные js
- Работа с переменными JS