簡體   English   中英

HotTowel角和立即調用函數表達式(IIFE)

[英]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,則將controllerIdshell函數添加到全局范圍。

John Papa的風格指南中有一個解釋:

為什么?:IIFE從全局范圍中刪除變量。 這有助於防止變量和函數聲明在全局范圍內的壽命比預期的長,這也有助於避免變量沖突。

為什么?:當代碼被壓縮並捆綁到一個文件中以部署到生產服務器時,變量和許多全局變量可能會發生沖突。 IIFE通過為每個文件提供可變范圍來保護您免受這兩種侵害。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM