Нужна помощь в понимании плагинов Twitter для начальной загрузки (jQuery) - PullRequest
6 голосов
/ 06 февраля 2012

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

Вопрос в том, что, черт возьми, такое:

(!function($) {/*....*/})(jQuery);

Почему написано! Functions ($) ??Я предполагаю для того же эффекта $.noConflict(), но не поэтому мы просто используем (function($) {/*...*/})(jQuery);, он просто оборачивает знак доллара в наш функциональный блок.Я полностью осознаю, что я мог бы быть далеко от базы здесь, я все еще являюсь промежуточным в jQuery / js.

Если кто-то мог бы, пожалуйста, просветить меня о влиянии оператора NOT перед оператором функции, я бы оченьцените это.

Редактировать : Похоже, что я упустил начальную загрузку, не имея (!function($) ... ), а просто !function($)..., но вы, ребятапомог мне понять, что это просто альтернатива ()

1 Ответ

3 голосов
/ 06 февраля 2012

Так что здесь происходит пара вещей. Все оборачивается в анонимную функцию, которая выполняется сразу же. Это делается для создания области видимости для библиотеки, чтобы при объявлении автором функций и переменных они не были глобальными по умолчанию.

Со мной пока. Хорошо, следующая вещь - это все ($){...}(jQuery) вещь. Здесь происходит то, что автор передает библиотеку jQuery в анонимную функцию-обертку в качестве параметра с именем $. Таким образом, в области действия анонимной функции он может использовать $ для ссылки на jQuery, как и следовало ожидать. Это более полезная практика, потому что 99% времени jQuery уже определен как $ в глобальной области видимости, но считается плохой формой для ссылки на глобальные переменные в области функций, и поэтому он / она передает его в в качестве параметра.

Все еще там? Восклицательный знак: в Javascript есть правило, в котором первая строка программы ДОЛЖНА быть выражением (т. Е. Не объявлением функции или оператором). Предопределяя! автор превращает объявление в выражение (которое возвращает false). В этом случае, однако, я не думаю, что! на самом деле требуется, потому что объявление обернуто в () и выполняется сразу. (Вызов функции - это выражение)

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