Почему эти два параметра в источнике jQuery?
Источник jQuery завернут в закрытие, например:
(function(window, undefined) { //awesome jQuery library code in here })(window);
Я не понимаю, зачем нужен один из этих параметров.
Поскольку window
является глобальной переменной, зачем его нужно передавать? Какова цель передачи в глобальном параметре и доступа к нему в закрытии с тем же именем?
- Как вызвать getBasicProfile () Google для входа в Google только на кнопку?
- Как я могу использовать «div» в Popover Twitter с несколькими кнопками?
- Как правильно включить jQuery в угловой cli 1.0.0-rc.0?
- Установите фокус клавиатуры на <div>
- Карусель Bootstrap: удалить авто слайд
Для чего undefined
параметр? Почему никакая ценность не передается ему?
- Изменить размер jqGrid на основе количества строк?
- Событие Fire onchange для TextBox, когда readonly истинно
- Отличие между прокруткой пользователя и программной прокруткой с помощью Javascript
- Обнаружение клавиши ввода в текстовом поле ввода
- ReCaptcha 2.0 с AJAX
- Сравните два формата даты в javascript / jquery
- Использование функции для обновления значения в методе data () jQuery задает переменную, эквивалентную анонимной функции, а не возвращаемое значение
- Редактировать поля данных jQuery Datatable
Я почти уверен, что на это уже был дан ответ, но:
-
Передача в
window
a) позволяет сжатию кода изменять имя (т.е. заменять его однобуквенным именем переменной в анонимной функции) и b) гарантирует, что переменная ссылается на объект окна во время определения библиотеки, на всякий случай Любой пользователь переопределяетwindow
в глобальной области после загрузки jQuery. -
В том числе
undefined
как аргумент (но не передающий значение), делает то же самое дляundefined
, позволяя изменять переменные и избегать проблем, еслиundefined
переменная переопределена (yup, Javascript позволяет это).
Я полагаю, что в обоих случаях это должно ускорить ссылки на переменную, поскольку это делает обе глобальные переменные доступными в области функций, которые интерпретатор будет искать, прежде чем искать в глобальной области. Но я не могу честно представить, что разница в производительности здесь существенна – я думаю, что самой большой проблемой является переименование имени переменной, что делает более компактным код при его минировании.