2010-03-10 5 views

Répondre

3

Les deux voies sont vraiment similaire, mais il y a une petite différence sur la façon dont la variable globale myFunc est créée.

Dans la deuxième façon, en utilisant l'instruction var, va créer la variable myFunc comme une propriété non supprimable de l'objet global, l'instruction var définit explicitement l'attribut {DontDelete} interne, par exemple:

var myFunc = (function(){ 
    //do something 
})(); 

delete window.myFunc; // false 

Bien que le premier peut être supprimé:

(function(){ 
    var myFunc = (function(){ 
     //do something 
    })(); 
    window.myFunc = myFunc; 
})(); 

//... 
delete window.myFunc; // true 

Si vous essayez ce qui précède à Firebug, les deux peuvent être supprimés, c'est parce que Firebug utilise l'évaluation de code (eval) dans la console.

Vous pouvez vérifier l'exemple ci-dessus here.

article recommandé:

+0

donc quand voudriez-vous, ou besoin, de supprimer quelque chose de l'objet global? –

+0

@Russ: Eh bien, une pratique courante consiste simplement à les mettre à «null». – CMS

0

rien sémantiquement. Cependant, le premier exemple vous pouvez avoir des fonctions «privées» qui peuvent rendre votre code plus lisible.

Prenez cet exemple:

(function(){ 
    var helperFunc = function() 
    { 
     //do something else 
    } 
    var myFunc = function(){ 
     //do something 
     helperFunc(); 
    } 
    window.myFunc = myFunc; 
})(); 

résultats de code plus propre dans les mains d'un bon développeur

Questions connexes