Эти два способа действительно похожи, но есть небольшая разница в том, как создается глобальная переменная myFunc
.
Вторым способом, используя оператор var
, создаст переменную myFunc
как неотъемлемое свойство глобального объекта, оператор var явно устанавливает внутренний атрибут {DontDelete}
, например,
var myFunc = (function(){
//do something
})();
delete window.myFunc; // false
Пока можно удалить первый:
(function(){
var myFunc = (function(){
//do something
})();
window.myFunc = myFunc;
})();
//...
delete window.myFunc; // true
Если вы попробуете описанное выше в Firebug, оба могут быть удалены, потому что Firebug использует оценку кода (eval
) в консоли.
Вы можете проверить приведенный выше пример здесь .
Рекомендуемая статья: