2016-07-20 20 views
5

Bazı kodlara bakıyorum ve aşağıda gösterildiği gibi yazıldığını görüyorum. Benim için mantıklı değil. Yanlış mı? Neden böyle yazılıyor? Ayrıca, use strict; kodun en üstünde, en üstte gitmemeli mi? "use strict" küresel kurulduBir işlevle açısal denetleyicide denetleyici tanımlamak yanlış mı?

Eğer

(function() { 
    'use strict'; 
    angular.module('itemList', []) 
    .component('itemList', { 
     templateUrl: 'item-list/item-list.component.html', 
     controller: ['Item', ItemController] 
    }); 

    function ItemController(Item) { 
    //code 
    } 
}()); 

cevap

5

bir IIFE sarılır nedeni kapsamı içinde bulunan ve genel ad ayarlanmamış yerel "use strict", fonksiyonlar ve değişkenler gibi tüm bildirimleri tutmaktır benim olmayan ve bu nedenle beklenmedik hataların oluşmasına neden olacak diğer ilgisiz kodları etkileyebilir

Denetleyiciyi tanımlamak doğru değil ...

sayılı bir en iyi uygulama

0

Bu bir "hemen-çağrılan fonksiyon ifadesi" olmasıdır. Ana avantaj, yerel değişken bildirirken genel ad alanını kirletmediğinizden emin olmaktır.

var someLeakingVar; 

function foo(){ 
    //do something with someLeakingVar. 
} 

yukarıdaki yapı ile sorun sonra gelen bir komut someLeakingVar değiştirme/ulaşmak mümkün olacaktır.

IIFE içinde sardıysanız. Sen eminiz, ifadesi içinde sadece kod işlevi hayattan içinde emin sadece kodu yapmak, kapsamlı olabilir deyimi 'sıkı kullanmak' aynı şekilde,

(function(){ 
    var nonLeakingVar = 'foo'; 
    //... 
})() 
//here nonLeakingVar is undefined 

değiştirme/reac yapabiliyor olacak sıkı modda çalıştırın.

Burada daha ayrıntılı bilgi bulabilirsiniz:

  1. strict mode
  2. IIFE
İlgili konular