Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.09.2014, 09:38
Новичок на форуме
Отправить личное сообщение для mkone112 Посмотреть профиль Найти все сообщения от mkone112
 
Регистрация: 18.09.2014
Сообщений: 5

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

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

Можно ли объявить переменную прямо в объекте или массиве или нет?
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2014, 10:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от mkone112
Можно ли объявить переменную прямо в объекте или массиве или нет?
Это опять из области вероисповедания?
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2014, 10:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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

var goods = [15, 'str', (i = 5, 'test')];
alert(i);
alert(goods[2]);
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2014, 11:56
Новичок на форуме
Отправить личное сообщение для mkone112 Посмотреть профиль Найти все сообщения от mkone112
 
Регистрация: 18.09.2014
Сообщений: 5

Спасибо... но как я понял вы просто избавились от 'var', возможны ли какие либо последствия в виде ошибок в некоторых браузерах например? Просто здесь же в учебнике написано об необходимости использования var.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2014, 12:40
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

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


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

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


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

Последний раз редактировалось Safort, 18.09.2014 в 12:43.
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2014, 12:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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

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

Последний раз редактировалось ksa, 18.09.2014 в 15:50.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2014, 15:04
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

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

Последний раз редактировалось petya, 18.09.2014 в 15:11.
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2014, 15:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

petya, ты меня с кем-то путаешь... Начни читать тему с самого начала.
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2014, 15:57
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Причем тут память? Вы наоборот засоряете память, так как такую переменную нельзя удалить.
Да ну? Объявленную через var локальную переменную удалит сборщик мусора по окончании функции (если ее, конечно, ничто не замкнет). Объявленная без var так и останется висеть в глобале.
Ответить с цитированием
  #10 (permalink)  
Старый 18.09.2014, 16:06
Аспирант
Посмотреть профиль Найти все сообщения от petya
 
Регистрация: 02.09.2014
Сообщений: 77

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить находится курсор на объекте или нет agert Events/DOM/Window 3 20.01.2014 14:34
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Можно ли передать переменную ajax'om ? Vladislav Общие вопросы Javascript 2 18.02.2013 06:34
Из load в переменную или в document.getElementById SergoMorello jQuery 5 17.10.2012 13:10
Можно ли как-то условие match() через переменную использовать? Tend Общие вопросы Javascript 1 16.03.2009 18:52