Как все говорили, это в значительной степени связано с созданием локальной области. Другим преимуществом является то, что вы можете использовать его для (без лучшего слова) переименования переменных. Возьмем, к примеру, как несколько фреймворков javascript используют $
в качестве сокращенной для их основной функции библиотеки.Если вы создаете замыкание, как в вашем примере, это не имеет значения, что $
является вне, вы можете использовать его в качестве параметра и внутри него может быть все, что вы хотите:
// out here $ might be Prototype, something else, or even undefined
(function($) {
// in here, $ is jQuery
})(jQuery);
Другой небольшой совет для влачат дополнительная пара миллисекунд вашего скрипта должна использовать эту же технику для создания неопределенной переменной. Большинство людей думают, что undefined
- специальное ключевое слово в javascript, но на самом деле это просто рассматривается как обычная переменная, которую вы, надеюсь, никто не определит. Несколько стандартная практика проверки для неопределенной переменной:
if (x == undefined)
... на самом деле довольно расточительно, так как он проверяет всю цепочку области для переменной с именем «неопределенным». Для быстрого доступа этого, вы можете использовать этот метод:
(function($, undefined) {
// code here
})(jQuery); // note that there's just one parameter passed
Теперь, когда undefined
на самом деле в объеме (с неопределенным значением), проверяя в цепочку области может остановиться в этой точке. Микро-оптимизация, да, но это не больно знать.
Вам пришлось бросить jQuery, не так ли :) –
Ха-ха, ну это _is_ мой любимый;) –