Plus l'emplacement d'un identifiant est profond en JavaScript, plus il lit et écrit plus lent. Par conséquent, la lecture et la rédaction des variables locales dans une fonction sont toujours les plus rapides, tandis que la lecture et l'écriture des variables globales sont généralement les plus lentes. Une bonne règle de base est: si une valeur de scope croisée est référencée plus d'une fois dans une fonction, stockez-la dans une variable locale.
Par exemple:
La copie de code est la suivante:
<! - Avant l'optimisation ->
<script type = "text / javascript">
fonction initUi () {
var bd = document.body,
links = document.getElementByTagName ("A"),
i = 0,
len = links.length;
tandis que (i <len) {
Mise à jour (liens [i ++]);
}
document.getElementById ("go-btn"). onclick = function () {
commencer();
}
bd.classname = "actif";
}
</cript>
Cette fonction fait référence à un document trois fois et le document est un objet global. Le processus de recherche de cette variable doit traverser l'ensemble du lien de portée jusqu'à ce qu'il se trouve enfin dans l'objet variable global. Vous pouvez réduire l'impact des performances en stockant la référence à la variable globale dans une variable locale, puis en utilisant cette variable locale au lieu de la variable globale.
Par exemple:
La copie de code est la suivante:
<! - Après l'optimisation ->
<script type = "text / javascript">
fonction initUi () {
var doc = document,
bd = doc.body,
links = doc.getElementByTagName ("A"),
i = 0,
len = links.length;
tandis que (i <len) {
Mise à jour (liens [i ++]);
}
doc.getElementById ("go-btn"). onclick = function () {
commencer();
}
bd.classname = "actif";
}
</cript>