Как объявить глобальную переменную из функии?
Как объявить глобальную переменную из функии?
Например:
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 стало глобальным...:help: |
window.playerUrl = 1 |
Универсальный способ, работает не только в браузерах, но и там, где windows нет. Не совместим с "use strict" :-(
function f() {
(function(){return this;})().playerUrl = 1;
}
f();
alert( typeof playerUrl + ": " + playerUrl );
А можно просто присвоить значение не объявляя (т.е. без слова var) |
Цитата:
и что бы не лепить то что ты слепил, можно сделать гораздо проще. И безо всяких функций: var global = window || this; global.ololo = 1; alert(ololo); "use strict" var global = window || this; global.ololo = 1; alert(ololo); |
Кста, таким способом можно доступиться внутри функции до глобальной переменной даже если в функции объявлена одноименная локальная:
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 );
|
Цитата:
|
Цитата:
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 );
|
Цитата:
я обычно пишу так:
(function(window) {
...
})(window || this);
|
Цитата:
var global = window || this; - абсолютно бессмысленная конструкция, т.к. там где window есть, не нужна, а там где нет - падает. Так что: var global = (function(){return this;})(); // :yes: |
Цитата:
var global = (function(){return this || window})();
|
| Часовой пояс GMT +3, время: 17:34. |