Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать локальную переменную глобальной (https://javascript.ru/forum/misc/20878-kak-sdelat-lokalnuyu-peremennuyu-globalnojj.html)

AquaGen 21.08.2011 12:43

Как сделать локальную переменную глобальной
 
сабж

B@rmaley.e><e 21.08.2011 12:52

function fnc(){
  var localVariable = 5;
  window.globalVariable = localVariable;
};

fnc();

alert([typeof localVariable, typeof globalVariable])

AquaGen 21.08.2011 12:53

просто добавить window.?
не работает

$.ajax({
				  url: "/modules/register/userfree.php",
				  success: function(xml) {
						window.errorname=$(xml).text();	
					},
				  data:"username="+$(date).attr('value'),
				  dataType: "xml"
				});
			alert(window.errorname);

undefined
Цитата:

Uncaught exception: ReferenceError: Undefined variable: errorname

Gvozd 21.08.2011 13:03

Цитата:

Сообщение от AquaGen
не работает

прекрасно работает.
просто в вашем коде, вы вызываете alert до того, как выполнится запрос, и будет выставлена переменная

Так, что учите про ассинхронность.
ну ив тему статьи, стоит почитать: http://javascript.ru/basic/functions#oblasti-vidimosti

devote 21.08.2011 13:05

Цитата:

Сообщение от AquaGen
просто добавить window.?
не работает

Может просто нужно дождаться окончания работы функции которая заносит данные в переменную, а уж потом вызывать alert

monolithed 21.08.2011 14:32

Цитата:

Сообщение от AquaGen
просто добавить window.?

не нужно ничего добавлять, вот абстрактный пример:
(function() {
    var foo;
    $.get('http://example.com?key=value', function(data, status) {
        if(status == 'success') {
            foo = data;
            // тут и работайте с foo
        }
    });
    // тут foo - undefined, до тех пор пока не выполнится условие выше
}());

Sweet 21.08.2011 14:59

Цитата:

Сообщение от monolithed
foo - undefined, до тех пор пока не выполнится условие выше

Плохой совет, потому что пока foo не объявили, будет ReferenceError:
if( false )
  foo = true;
try{
  alert( foo );
} catch( error ) {
  alert( error );
};

monolithed 21.08.2011 15:07

Цитата:

Сообщение от Sweet
Плохой совет, потому что пока foo не объявили, будет ReferenceError:

ReferenceError не будет, т.к. переменная foo объявлена, но не определена.

Sweet 21.08.2011 15:22

Цитата:

Сообщение от monolithed
ReferenceError не будет, т.к. переменная foo объявлена, но не определена.

Ой:) Я и не заметил этого:D


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