LINUX.ORG.RU

Почему не следует использовать var в global

 ,


0

1

Наверное, многие думают, что объявленная в global переменная с var отличается от той что без var только тем, что имеет скрытое св-во dontdelete. Я выяснил, что в node, помимо этого, она не копируется в global. Возможно, еще где-нибудь. Это значит, к примеру, что она не будет доступна через конструкцию for(i in global). Поэтому, в общем случае, не стоит объявлять через вар в глобальной области. Объявляя без вар мы ничего не теряем. Но не наоборот. Так что это тупой базворд, не надо слушать этих умников от CS.

многие думают что в ноде глобальная и модульная области видимости вообще здорово отличаются. Подумай над этим.

dib2 ★★★★★ ()
Ответ на: комментарий от anonimous

Похапешнику по призванию этого не понять. Все разжевано в документации, проведи время с пользой - rtfm.

anonymous ()
Ответ на: комментарий от anonymous

Я не похапешник, хотя ничего против PHP не имею. Дай хотя бы наметку, по какой теме искать. А иначе, это выглядит так, что ты брякнул что-то, чего сам не понимаешь.

anonimous ()
Ответ на: комментарий от anonimous
var x = 5;

это не глобальная переменная, это переменная модуля. глобальные:

x = 5;
global.y = 7;
т.е. по-сути можешь рассматривать каждый js-файл в ноде как обернутый в (function(){})()

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Ну и что? Ты же не имееш цели, чтобы из модуля у тебя в глобальную область переменные скопировались? они должны быть локальными для модуля, так же как и для (function(){}()) Тут через var. А я говорю о глобальной области.

anonimous ()
Ответ на: комментарий от anonimous

потому что как я уже сказал, это не глобальная переменная, это переменная модуля.

dib2 ★★★★★ ()
Ответ на: комментарий от anonimous

ты объявляешь переменную внутри модуля и удивляешься что она не глобальная. ты тупой?

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Нет это ты тупой. Где ты видел, что я говорил об обявлении внутри модуля?

anonimous ()
Ответ на: комментарий от anonimous

Где ты видел, что я говорил об обявлении внутри модуля?

здесь:

var a = 1

dib2 ★★★★★ ()

Вот жабоскрипт уродский.

anonymous ()
Ответ на: комментарий от anonimous

Ты надоело, ничтожество. Тебе давно пора в читать документацию. До просветления

Адьйос.

dib2 ★★★★★ ()
Ответ на: комментарий от dib2

Я смотрю, чтение доков не излечивает от беспрбудной тупости. Лучше воздержусь.

anonimous ()

Глобальные переменные в правильно написанной программе не нужны.

А ещё разупорись, с помощью var глобальную переменную не объявить.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

Строго говоря, она и есть глобальная переменная, семантически. без var — это свойство, все равно, что global.something=

anonimous ()
Ответ на: комментарий от PolarFox

В JS без глобальных переменых ты не обойдешься. Выражение var a = function(){} — это запись безымянной ф-ции в глобальную переменную. Ты в любом случае записываешь либо в глобальную переменную, либо в глобальный объект. Покажи ка мне кусок, где ты можешь этого избежать. Минимизировать можешь, да.

anonimous ()
Ответ на: комментарий от anonimous

А на верхнем уровне var нужен хотя бы затем, чтобы потом можно было скопировать кусок кода в неймспейс/модуль/любую другую ограниченную область видимости, и код при этом не засорял глобальный скоп.

Ни разу не видел конструкцию вида for i in global и не могу представить ситуацию где это было бы полезно.

Ещё не знаю справедливо ли это для js-движков, но в lua, который весьма близок к js в этом плане, настоящие глобальные переменные тупо медленнее локальных.

PolarFox ★★★★★ ()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от PolarFox

А на верхнем уровне var нужен хотя бы затем, чтобы потом можно было скопировать кусок кода в неймспейс/модуль/любую другую ограниченную область видимости, и код при этом не засорял глобальный скоп.

Об этом речи нет. Мух отдельно.

anonimous ()

Интересно, что произойдёт, когда товарищ откроет ещё и «use strict». Вообще башню снесёт, наверное.

anonymous ()
Ответ на: комментарий от anonymous

Мне на него срать, оно опционально. Никакого крышесноса тут нет, это способ избавить от проблем убогих, кто не в силах понять язык.

anonimous ()
Ответ на: комментарий от anonimous

Ты снова расписался в своём маразме, поздравляю.

anonymous ()
Ответ на: комментарий от anonimous

https://stackoverflow.com/questions/19850234/node-js-variable-declaration-and...

Дурачок, лучше слушай, что тебе умные люди говорят. И сам учись нормально выражать свои мысли.

Как обычно, через 100 комментов обнаружится, что ты не понимаешь что такое scope и пользуешься собственным определением.

anonymous ()
Ответ на: комментарий от anonymous

Скоп догогуша, это скоп, у функций с лексическим биндингом, свой скоп, но в js глобальный скоп функций смешан с неймспейсом глобального объекта. В браузерах все переменные глобальные просто копируются в window, и доступны как свойства window. Это хак.

anonimous ()
Ответ на: комментарий от anonimous

Кормлю attentionwhore

Хорошо, давай по-другому. Ты понимаешь разницу между языком и рантаймом?

anonymous ()

Блджад, почему это чудо до сих пор не забанено?

staseg ★★★★★ ()

ТС скоро умрет от ожирения.

Atheist ★★★ ()
Ответ на: комментарий от staseg

Многократные чемпионы олимпиад занесены в красную книгу как редкий вид.

Vit ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.