Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли объявить переменную прямо в массиве или объекте (https://javascript.ru/forum/misc/50240-mozhno-li-obyavit-peremennuyu-pryamo-v-massive-ili-obekte.html)

mkone112 18.09.2014 09:38

Можно ли объявить переменную прямо в массиве или объекте
 
Такой код не работает:
var goods = [15, 'str', var i = 5, {text : 'last element'}];

Этот код также не работает
var goods = {
	text : var i = 5
}

Можно ли объявить переменную прямо в объекте или массиве или нет?

ksa 18.09.2014 10:41

Цитата:

Сообщение от mkone112
Можно ли объявить переменную прямо в объекте или массиве или нет?

Это опять из области вероисповедания? :D

ksa 18.09.2014 10:47

Цитата:

Сообщение от mkone112
Можно ли объявить переменную прямо в объекте или массиве или нет?

Присвоение можно замастырить...

var goods = [15, 'str', (i = 5, 'test')];
alert(i);
alert(goods[2]);

mkone112 18.09.2014 11:56

Спасибо... но как я понял вы просто избавились от 'var', возможны ли какие либо последствия в виде ошибок в некоторых браузерах например? Просто здесь же в учебнике написано об необходимости использования var.

Safort 18.09.2014 12:40

Как вариант, использовать самовызываемые функции


var a = [1, 
        'два', 
        (function() { 
          var hide = 'эта переменная доступна только тут';
          window.newVar = 'Три. Привет из массива'; 
          return window.newVar; 
        }())];  

  console.log(a[2]);
  console.log(newVar);


Но при этом переменная newVar станет глобальной. Если это тебе и нужно, то ок.

ksa 18.09.2014 12:53

Цитата:

Сообщение от mkone112
в учебнике написано об необходимости использования var

Да. Дабы не засорять память и пространство имен...

И там не написано "старайтесь использовать var в любом месте"... :D
Какая выгонка использовать его при объявлении массива или объекта? Тем паче, что var может находиться в любом месте "уровня"...

petya 18.09.2014 15:04

Цитата:

Сообщение от ksa
Дабы не засорять память

Причем тут память? Вы наоборот засоряете память, так как такую переменную нельзя удалить.

ksa 18.09.2014 15:49

petya, ты меня с кем-то путаешь... :D Начни читать тему с самого начала. ;)

Erolast 18.09.2014 15:57

Цитата:

Причем тут память? Вы наоборот засоряете память, так как такую переменную нельзя удалить.
Да ну? Объявленную через var локальную переменную удалит сборщик мусора по окончании функции (если ее, конечно, ничто не замкнет). Объявленная без var так и останется висеть в глобале.

petya 18.09.2014 16:06

Я вот о чем:
var a=1
console.log(delete a)

Цитата:

так и останется висеть в глобале.
Да, это очень странно, когда создаешь свойство объекта, а это свойстао, внезапно, так и остается висеть. Непорядок.


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