Возникли проблемы при передаче зависимого объекта в модуль Javascript - PullRequest
1 голос
/ 29 февраля 2012

У меня есть следующий код:

var myModule = (function($) {
  // Insert code here
} (jQuery || Zepto));

Если на странице нет ссылки на jQuery, скрипт выдаст ошибку, сказав, что jQuery is undefined. В коде много раз, когда я буду писать var foo = missingObj || fallbackObj; и работает нормально.

Я пытаюсь выяснить а) почему это не работает в этом контексте и б) какая альтернатива будет, так как я хотел бы использовать эти проекты, использующие любой фреймворк.

1 Ответ

4 голосов
/ 29 февраля 2012

var foo = missingObj || fallbackObj;

работает, только если missingObj не объявлено.Например.это происходит, когда missingObj является аргументом, значение которого равно undefined (это наиболее распространенный вариант использования для x = y || по умолчанию)

Код, который вы ищете:

} (window.jQuery || window.Zepto));

Таким образом, в основном причина того, что это не работает, заключается в том, что ваши запутанные объекты, имеющие значение undefined, и объекты, которые не объявлены., который не работает.Доступ к window.jQuery означает доступ к неопределенному значению, которое работает.

Например,

function jQuery(options) {
  options = options || {};
  ...
}

Работает, потому что options не определено, а не объявлено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...