Словари JS и глобальные переменные

118
31 мая 2021, 14:00

хочу передать переменную window.globalVar из функции(функция меняет значение переменной при наведении на элемент), но не получается не могу понять в чем причина, заранее благодарен

    window.globalVar = null;
    $.miniMenu = null;
    $(document).ready(function(){
var  project_li = $(".project-li"),
     Project_BG = $("#Project-Desc-BG"),
     project_body = $(".project-desc-body");
    project_li.on("mouseover", function taca() {
        project_li.removeClass('active');
        $(this).addClass('active');
        project_body.removeClass('active');
        $($(this).attr("data-target-project")).addClass('active');
        Project_BG.css({'background-image' : $(this).attr("data-target-bg")});
      window.globalVar= $(this).attr("data-target-bg");
          //console.log(window.globalVar); //тут работает
        Project_BG.css({'background-size' : $(this).attr("cover")});
        Project_BG.css({'z-index' : $(this).attr("z")});
    });
});
 console.log(window.globalVar); // тут не работает
Answer 1

$(document).ready - асинхронный кусок кода, он запускается и код вне блока идет дальше, поэтому console.log(window.globalVar) срабатывает до изменения window.globalVar

Answer 2

Как ответил Shiki, функция ready срабатывает гораздо позже, чем срабатывает логирование в консоль. JS в данном случае не синхронный, то есть функция ready может сработать допустим через час или никогда. И её данные можно передать только в функцию, которая будет вызвана внутри ready. Тут как-бы рождается новый поток выполнения, а в старый вернуться уже нельзя. Самый простой ответ на ваш вопрос - поднять консоль-лог на пару строчек выше внутрь ready.

READ ALSO
Адекватный ли код я пишу?

Адекватный ли код я пишу?

Ребята, я тут практикуюсь с Promise в jsИ решил написать функцию tree

79
Добавить класс кнопке при клике

Добавить класс кнопке при клике

В id="convert-json-to-html-tree-sets" подгружаю форму с инпутами и кнопками к каждому инпуту

101
Как написать эту jquery строку на чистом javascript?

Как написать эту jquery строку на чистом javascript?

Как написать эту jquery строку на чистом javascript? Строку я обозначил комментарием

181