2012-02-29 2 views
1

я следующий код:Возникли проблемы, переходящих в зависимом объекте к модулю Javascript

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

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

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

ответ

4

var foo = missingObj || fallbackObj;

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

код Ваш поиск является

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

Так в основном причина это не работает, потому что ваши запутанные объекты, у которых есть значение undefined и объекты, которые не объявлены.

Доступ к jQuery имеет доступ к необъявленному значению, которое не работает. Доступ к window.jQuery имеет доступ к неопределенному значению, которое действительно работает.

Например

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

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

+0

я печатал свой ответ мышления «Теперь есть способ это примерно в тысячу раз лучше, чем это снова?» но я рисовал пробел. Оказывается, я мог бы просто обновить страницу. –

+0

Я знал, что мне не хватает чего-то простого. Благодаря! – JamesEggers

+0

@davin Исправлено: ¬_¬ – Raynos

Смежные вопросы