@beduin01

Как в JavaScript дотянуться до переменной?

Не могу понять как дотянуться до переменной из другого участка кода. Пока пытаюсь сделать это из консоли браузера, но что-то не выходит. Не могли бы объяснить логику.
Вот функция:

window.map.on('draw:created', function (e) {
    var type = e.layerType,
        layer = e.layer;

    if (type === 'marker') {
        // Do marker specific actions
    }

     var myvar = "foo"; // вот переменная


Как мне ее поменять из внешнего скрипта? И как бы я к ней обращался, если бы map не был внутри области `window`?
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
AlexXYZ
@AlexXYZ
O Keep Clear O
В принципе можно. Вот так, например:

var get_myvar;
var set_myvar;
window.map.on('draw:created', function (e) {
    var type = e.layerType,
        layer = e.layer;

    if (type === 'marker') {
        // Do marker specific actions
    }

     var myvar = "foo"; // вот переменная
     get_myvar = function(){
         return myvar;
     }
     set_myvar = function(val){
         myvar = val;
     }
});
console.log( "myvar="+ get_myvar() );
set_myvar("new_value");
console.log( "myvar="+ get_myvar() );
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AppFA
@AppFA
Frontend developer at Yandex
Если хотите обращаться к переменной вне колбэк функции, тогда вынесите объявление переменной выше т.е.:
var myvar;

window.map.on('draw:created', function (e) {
    var type = e.layerType,
        layer = e.layer;

    if (type === 'marker') {
        // Do marker specific actions
    }

     myvar = "foo"; // вот переменная

Тогда сможете обращаться к этой переменной из любого участка кода который находится после объявления переменной.
Ответ написан
Комментировать
@burtulug
Можно еще так:
var obj = (function(){
	var myvar;
	window.map.on('draw:created', function (e) {
		myvar = "foo";
	});
	return {
		getVar: function(){
			return myvar;
		}
	};
})();
window.map.trigger('draw:created');
console.log(obj.getVar());

Переменная myvar объявляется в функции и не торчит наружу. По наступлению события ей присваивается значение и она хранится в замыкании, откуда мы ее получаем методом getVar.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы