0

IIFE'ler hakkında bir article okuyorum ama getirdiği ana değerin, aşağıdaki kodda "i" bir IIFE'ye yerleştirilirse değiştirilemeyeceği anlamında değişkenler için ayrıcalıklar yarattığını hissediyorum. Peki ya isim ne olacak? Verilen ikisi arasında, her ikisi de değişkenlerini "sayaç" kapsamında bulunduranlar arasında nasıl bir fark vardır?IIFE ad alanını nasıl korur?

var counter = { 
    i: 0, 
    increment: function() {i++;} 
}; 

var counter = (function() { 
    var i = 0; 
    return { 
    increment: function() {i++;} 
    }; 
})(); 

cevap

1

işlevi başvuru döndürmek için seçtiği sürece, bunu ilan işlev dışından bir yerel değişken erişmek için hiçbir yolu yoktur. Javascript'in yalnızca işlev kapsamı olduğundan ve hiçbir sürüm bir namespace blok sağladığından, bu bir değişkeni diğer kodlardan gizlemenin tek yoludur. ES6 tarafından tanıtılan diğer kapsamlarda ile

, ideal, modül kapsamı bu basitleştirmek için, blok kapsamı kullanabilir veya:

let i = 0; 
export default { 
    increment: function() {i++;} 
};