JavaScript YUI3 использует глобальные переменные?

#javascript #yui #closures #yui3

#javascript #yui #замыкания #yui3

Вопрос:

Я не могу понять, как обновить глобальную переменную из YUI3.

Рассмотрим следующий код:

 window.myVariable = 'data-one';
var yuiWrap = YUI().use('node',function(Y) {
  console.log(window.myVariable); // 'data-one'
  window.myVariable = 'data-two';
  console.log(window.myVariable); // 'data-two'
});
console.log(window.myVariable); // 'data-one'
  

Кто-нибудь может мне это объяснить? Это доставляет мне много хлопот. Почему window.myVariable может быть доступен, но не обновляться должным образом из блока YUI3?

Я думаю, что это может иметь какое-то отношение к замыканиям, но я не понимаю, почему замыкания должны применяться к глобальному объекту «window».

Помочь?

Ответ №1:

Обратный вызов выполняется не сразу, а после того, как что-то произошло:

Присоединяет один или несколько модулей к экземпляру YUI. Когда это выполняется, анализируются требования, и может произойти одно из нескольких событий:

  • Все требования доступны на странице — модули прикреплены к экземпляру. Если указано, обратный вызов use выполняется синхронно.
  • Модули отсутствуют, утилита Get недоступна ИЛИ конфигурация ‘bootstrap’ имеет значение false — Выдается предупреждение об отсутствующих модулях, и все доступные модули подключаются.
  • Модули отсутствуют, загрузчик недоступен, но утилита Get есть, а значение boostrap не равно false — загрузчик загружается перед выполнением следующего….
  • Модули отсутствуют, а загрузчик доступен — загрузчик расширяет дерево зависимостей и извлекает недостающие модули. При завершении загрузки обратный вызов, предоставленный для использования, выполняется асинхронно.

Комментарии:

1. Это именно то, что нужно. Спасибо. Если я использую конфигуратор зависимостей YUI3 , чтобы убедиться, что «Узел» явно включен в страницу перед запуском моего кода, тогда все работает нормально. 🙂