[英]HotTowel Angular and Immediately-Invoked Function Expression (IIFE)
開始查看AngularJS的HotTowel模板,所有這些“為什么”問題都浮現在我的腦海。 我已經清除了其中一些,但無法清除。 即對控制器使用“立即調用的函數表達式(IIFE)”。 下面是“ shell.js”中的代碼
(function () {
'use strict';
var controllerId = 'shell';
angular.module('app').controller(controllerId,
['$rootScope', 'common', 'config', shell]);
function shell($rootScope, common, config) {
var vm = this;
//rest of the code omitted
我不知道為什么在這里使用IIFE。 原因之一可能是如果我們不使用IIFE,那么
var controllerId = "shell"
將具有全球范圍(對嗎?)。 我試圖刪除IIFE樣式,顯然它可以解決任何問題。 我瀏覽了《 AngularJS樣式指南》,但在那里找不到解釋。 有人可以解釋一下采用這種方法會帶來什么好處嗎?
PS:如果您認為這不是此問題的正確地點,請向我指出正確的地方。
如您所說,這是為了防止添加到全局范圍。 在上面的代碼中,如果不使用IIFE,則將controllerId
和shell
函數添加到全局范圍。
John Papa的風格指南中有一個解釋:
為什么?:IIFE從全局范圍中刪除變量。 這有助於防止變量和函數聲明在全局范圍內的壽命比預期的長,這也有助於避免變量沖突。
為什么?:當代碼被壓縮並捆綁到一個文件中以部署到生產服務器時,變量和許多全局變量可能會發生沖突。 IIFE通過為每個文件提供可變范圍來保護您免受這兩種侵害。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.