Разница между переменной с var и без, которые в глобальной области
Приветствую всех.
Вот я почитал о переменных и их областях видимости, по сути, понимаю как работают локальные переменные, а как глобальные, но мне не понятно, какая разница, если задать переменную с VAR вне функции или метода, а в глобальной видимости? Какая разница будет между переменной с VAR и без? |
zhurchik, без var - это не правильно, в старых браузерах или в строгом режиме будет вызвана ошибка.
|
Ruslan_xDD,
То-есть, переменную вообще без var не рекомендуется писать? А если я хочу задать глобальную переменную из функции? |
zhurchik,
Цитата:
|
Цитата:
|
danik.js, помню как-то забыл объявить переменную и в файрфоксе старом не работало, и долго гадал почему не работает. :)
Цитата:
var foo;
function myFunc() {
foo = 'bar';
};
myFunc();
alert(foo);
function myFunc() {
window.foo = 'bar';
};
myFunc();
alert(foo);
Но засирать глобал я бы вообще не рекомендовал. |
var message = 'За пределами функции';
function warning() {
var message = 'Внутри функции';
alert(message); // Внутри функции
}
warning();
alert(message) // За пределами функции
var message = 'За пределами функции';
function warning() {
message = 'Внутри функции';
alert(message); // Внутри функции
}
warning();
alert(message) // Внутри функции
|
Цитата:
'use strict'; dickLength = 10; //Exception: assignment to undeclared variable dickLength |
Разница в том, что перменную с var невозможно удалить в v8. В FF вроде удаляется.
var a = 1 b=2 console.log(delete a, delete b) еще в старых ie ошибки были из-за этого, просто в силу тупизны самих движков ie, у них там "свой" M$ecmascript(TM):) |
Цитата:
можно пруф, где написано, что запрещено? В любом случае, обойти это легко, можно писать window.a=1, будет тоже самое, что без var. |
Цитата:
а чтобы не писать каждый раз window, напиши вначале скрипта w=window а внутри ф-ции w.a=... Но пока не стоит с этим заморачиваться, вроде никаких проблем пока нет с этим. если будут, тогда и думать будем:) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
w.one = 10; w.second = 20; ниуя не поймет, чо творится. |
Цитата:
http://www.2ality.com/2014/09/es6-modules-final.html http://webpack.github.io/ http://browserify.org/ http://requirejs.org/ |
Цитата:
|
Я же говорил уже, строгий режим - это режим соответствия стандарту ES5, существующий лишь для того, чтобы не поломать прежний код. Нет, если хочется говнокодить на ES3 - пожалуйста, но тогда зачем вообще в программисты лезть?
|
Цитата:
|
Цитата:
|
Цитата:
Насчет говнокода я бы поспорил. Есть куча языков, где нет никаких варов, и прекрасно обходятся. Конкретно в JS он нужен для локальных переменных. Зачем его в глобальную область притянули -- вообще не понятно. Возможно, что-то связано с производительностью, либо, какие то скрытые дыры в дизайне. |
Цитата:
Цитата:
2. Очевидно, для единого стиля. |
Цитата:
|
| Часовой пояс GMT +3, время: 12:24. |