開始查看適用於AngularJS的HotTowel模板,並且所有這些「爲什麼」問題都會出現在我的腦海裏。我清除了其中的一些,但無法清除此問題。即對控制器使用「立即調用函數表達式(IIFE)」。下面是從「shell.js」代碼HotTowel角度和立即調用函數表達式(IIFE)
(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 Style Guide,但在那裏找不到解釋。有人可以請解釋我們通過採用這種方法獲得的好處嗎?
P.S.如果你認爲這不是這個問題的正確位置,請將我指向正確的位置。
這是回答您的問題嗎? –
所以如果我們不使用這個var controllerId =「shell」,那麼我們不需要IIFE?除了聲明控制器ID之外,IIFE在控制器聲明中還會有哪些更好的情況? – JenonD
好吧,另一個地方是我在指令聲明中看到的,var app = angular.module('app');當我們需要對應用程序的引用時正在使用它。如果不是使用IIFE的本地作用域,那麼我們必須命名app1,app2 ...十幾個名稱來引用應用程序的指令/服務 – JenonD