Я пытаюсь понять, как работает этот код. Я, наконец, понял, что это петля. Это не цикл «while» или «for», но, тем не менее, это цикл, в силу того, что я называю себя (пожалуйста, поправьте меня, если я ошибаюсь).Может кто-нибудь объяснить этот код Javascript?
Я понимаю, что это основная функция: передать JQuery, когда он загружен в мою функцию foo, когда загружен jQuery. Для этого он проверяет jQuery на Window
, и если нет, он сбрасывает timer()
. Это петля. Я понимаю.
Позвольте мне объяснить, что я не понимаю:
- вызов:
CheckDependency.Deferred.execute(foo);
- почему "отложенным" ключевое слово?
execute
baffles me: Я ожидаю, что если я позвонюCheckDependency.Deferred.execute
, он выполнит только этот метод. Почему это явно работает функция таймера. почему он не мог просто получить этот код после таймера(), так как он продолжает цикл, а затем возвращает jquery?
- Говоря о возврате. Почему там есть метод?
CheckDependency.Deferred.execute(foo);
как сумасшедший для меня, какCheckDependency.Deferred.RETURN.execute(foo);
(или какого-то подобного сумасшедшего заявления)
Я довольно новый для JavaScript (с PHP). Вот код:
function foo(){ console.log('jQuery found!');
}
var CheckDependency = CheckDependency || { };
CheckDependency.Deferred = function()
{
var functions = [];
var timer = function() {
if (window.jQuery) {/* && window.jQuery.ui*/
while (functions.length) {
functions.shift()(window.jQuery);
}
} else {
window.setTimeout(timer, 250);
}
};
timer();
return {
execute: function(onJQueryReady)
{
if (window.jQuery) { // && window.jQuery.ui
onJQueryReady(window.jQuery);
} else {
functions.push(onJQueryReady);
}
}
};
}();
CheckDependency.Deferred.execute(foo);
Это довольно прямолинейно, 'execute' - это функция, которая запускается, когда вы ее вызываете.Похоже, что он ждет экземпляр jQuery. – Shanimal
Google для подходящих учебных пособий –
Вы понимаете, что означает 'CheckDependency.Deferred = function() {...}()' does? –