JavaScript Préférer les variables locales aux globales, aux attributs et aux valeurs indexées


Exemple

Les moteurs Javascript recherchent d’abord les variables dans la portée locale avant d’étendre leur recherche à de plus grandes étendues. Si la variable est une valeur indexée dans un tableau ou un attribut dans un tableau associatif, elle recherchera d'abord le tableau parent avant de trouver le contenu.

Cela a des implications lorsque vous travaillez avec du code critique de performance. Prenons , par exemple , une commune for la boucle:

var global_variable = 0;
function foo(){
    global_variable = 0;
    for (var i=0; i<items.length; i++) {
        global_variable += items[i];
    }
}

Pour chaque itération for la boucle, le moteur rechercher des items , rechercher la length attribut dans les éléments, la recherche des items à nouveau, rechercher la valeur à l' index i des items , puis enfin rechercher global_variable , essayant d' abord la portée locale avant de vérifier la portée globale.

Une réécriture performante de la fonction ci-dessus est:

function foo(){
    var local_variable = 0;
    for (var i=0, li=items.length; i<li; i++) {
        local_variable += items[i];
    }
    return local_variable;
}

Pour chaque itération dans la réécrite for la boucle, le moteur lookup li , la recherche des items , rechercher la valeur à l' index i et recherche local_variable , cette fois seulement besoin de vérifier la portée locale.