Задать вопрос
@Richswitch
junior

Как получить доступ к локальной переменной в другой функции?

Привет!
Читаю про замыкания, область видимости и т.д., почти все понимаю, но не могу решить свою проблему.
Есть такой код:
(function(){
    "use strict";
        var imgArr = document.getElementsByClassName('imgArr');

        [].forEach.call(imgArr, function(item, i, arr) {
            var size = {
                'widthImg': arr[i].width,
                'heightImg': arr[i].height
            };

            setInterval(function() {
                var rand = tRand(0, size.widthImg);
                motionItem();                                            - ВЫЗЫВАЮ ФУНКЦИЮ НИЖЕ
            }, 1000);

            function tRand(min, max) {
                var randValLeft = Math.floor(Math.random() * (max - min + 1));
            };

            function motionItem() {

                // arr[i].style.left = randValLeft + 'px';
                console.log(randValLeft);   - ПЫТАЮСЬ ПОЛУЧИТЬ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ИЗ ФУНКЦИИ ВЫШЕ
            };


        });
    
}());

Как видно из кода я пытаюсь получить значение переменной randValLeft из функции tRand получаю ошибку ReferenceError: randValLeft is not defined
Как бы вы решили эту проблему?
  • Вопрос задан
  • 1056 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
Exploding
@Exploding
wtf?
Через глобальную переменную
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Почитай про всплытие внимательнее
https://jsfiddle.net/2dvs16ed/

А вообще пора почитать про let и const
Ответ написан
NBComrade
@NBComrade
Если тебе понадобилось обращаться к локальной переменной из другой функции, то следует задуматься все ли ты делаешь правильно. В твоём случае лучше вернуть значение, вот тебе и будет обращение к "локальной" переменной.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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