Javascript.RU

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

Как объявить глобальную переменную из функии?
Как объявить глобальную переменную из функии?
Например:
var playerUrl
function playRTrack(playerId, myArray) {
		var rIndex = Math.floor(Math.random()*(arr.length));
		var rElement = arr[rIndex];
		var myPlayer = document.getElementById('player');
		var playerUrl = myUrl + rElement;
		var myDownload = document.getElementById('myDownload');
		myDownload.setAttribute("href", playerUrl);
		myPlayer.setAttribute("src", playerUrl);
		myPlayer.play();
	}

Чтобы значение переменной playerUrl стало глобальным...
Ответить с цитированием
  #2 (permalink)  
Старый 11.04.2013, 10:47
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

window.playerUrl = 1
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 11.04.2013, 11:12
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Универсальный способ, работает не только в браузерах, но и там, где windows нет. Не совместим с "use strict" :-(
function f() {
  (function(){return this;})().playerUrl = 1;
}
f();

alert( typeof playerUrl + ": " + playerUrl );


А можно просто присвоить значение не объявляя (т.е. без слова var)

Последний раз редактировалось rgl, 11.04.2013 в 11:15.
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2013, 11:16
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от rgl
Универсальный способ,
во задвинул... уж поверь если человек не знает как в браузере сделать глобальной, то уж явно не полезет туда где нет объекта window

и что бы не лепить то что ты слепил, можно сделать гораздо проще. И безо всяких функций:
var global = window || this;

global.ololo = 1;

alert(ololo);
"use strict"
var global = window || this;

global.ololo = 1;

alert(ololo);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 11.04.2013, 11:22
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Кста, таким способом можно доступиться внутри функции до глобальной переменной даже если в функции объявлена одноименная локальная:
var test = "global test";
function f() {
  var test = "local test";
  alert( test );
  alert( (function(){return this;})().test );
  (function(){return this;})().test = "new value"
}
f();

alert( test );
Ответить с цитированием
  #6 (permalink)  
Старый 11.04.2013, 11:25
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Сообщение от devote Посмотреть сообщение
и что бы не лепить то что ты слепил, можно сделать гораздо проще. И безо всяких функций:
Нельзя внутри функции-метода, внутри функции-конструктора, внутри функции, вызванной call или apply.
Ответить с цитированием
  #7 (permalink)  
Старый 11.04.2013, 11:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от rgl
Кста, таким...
var global = window || this;

var test = "global test";
function f() {
  var test = "local test";
  alert( test );
  alert( global.test );
  global.test = "new value"
}
f();
 
alert( test );
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 11.04.2013, 11:27
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от rgl
Нельзя внутри функции-метода.
а кто говорит о том что нужно это совать внутрь функции?
я обычно пишу так:
(function(window) {
    ...
})(window || this);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 11.04.2013, 11:37
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Сообщение от devote Посмотреть сообщение
var global = window || this;

var test = "global test";
function f() {
  var test = "local test";
  alert( test );
  alert( global.test );
  global.test = "new value"
}
f();
 
alert( test );

var global = window || this; - абсолютно бессмысленная конструкция, т.к. там где window есть, не нужна, а там где нет - падает. Так что:
var global = (function(){return this;})(); //
Ответить с цитированием
  #10 (permalink)  
Старый 11.04.2013, 11:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от rgl
а там где нет - падает.
var global = (function(){return this || window})();
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать переменную из JS в PHP методом xhr.send() ? winston3d AJAX и COMET 5 09.02.2013 20:29
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33
Немогу взять id как переменную Влад Общие вопросы Javascript 2 08.07.2009 19:38
Как вывести переменную из php в сценарий Vitaly jQuery 5 02.07.2009 17:54
Как обозначить переменную выбранную в FileChooser? woo_hoo Общие вопросы Javascript 4 03.07.2008 12:58