Есть несколько причин для этого:
1. Использование меньшего количества глобальных переменных Вводя функцию с глобальной переменной она будет зависеть от единственного аргумента, а не глобальная переменная, которая может быть использована несколько раз ,
2. Создание локальной сферы IIFE способ создать новую область, объявив функцию и немедленно ссылающейся на него. См. this question для получения дополнительной информации.
3. Лучше преуменьшать
Например, если вы Минимизировать ваш пример будет меняться от этого:
(function(document) {
//do stuff with document
})(document);
Для этого:
(function(a) {
//do stuff with a
})(document);
Обратите внимание на a
, который короче, чем ваш document
.
Edit: Исправлена опечаток
Полезная ссылка. Нашел это, что отвечает на это для меня: «Преимущество использования IFE - это возможность передавать общеупотребительные глобальные объекты, такие как окно, документ и т. Д. В качестве аргумента, уменьшая видимость области видимости (помните, что Javascript ищет свойство в локальной области и вверх по цепочке до глобального масштаба). Таким образом, доступ к глобальным объектам в локальной области сокращает время поиска, как показано ниже ». – tommyd456