Maison > interface Web > js tutoriel > le corps du texte

Résumer certaines fonctions et instructions à éviter d'utiliser en JavaScript

伊谢尔伦
Libérer: 2017-07-26 13:26:06
original
1254 Les gens l'ont consulté

Évitez d'utiliser des constructeurs eval ou Function

L'utilisation de constructeurs eval ou Function est très coûteuse et nécessite un moteur de script pour convertir le code source à chaque fois en code exécutable .
De plus, l'utilisation de eval pour gérer les chaînes doit être interprétée au moment de l'exécution.

Code qui s'exécute lentement :

function addMethod(object, property, code) { 
object[property] = new Function(code); 
} 
addMethod(myObj, 'methodName', 'this.localVar=foo');
Copier après la connexion

Code qui s'exécute plus rapidement :

function addMethod(object, property, func) { 
object[property] = func; 
} 
addMethod(myObj, 'methodName', function () { 'this.localVar=foo'; });
Copier après la connexion


Évitez d'utiliser with
Bien que pratique, nécessite un temps de recherche de référence supplémentaire car il ne connaît pas le contexte de la portée au moment de la compilation.

Code qui s'exécute lentement :

with (test.object) { 
foo = 'Value of foo property of object'; 
bar = 'Value of bar property of object'; 
}
Copier après la connexion

Code qui s'exécute plus rapidement :

var myObj = test.object; 
myObj.foo = 'Value of foo property of object'; 
myObj.bar = 'Value of bar property of object';
Copier après la connexion


Ne pas utiliser try-catch-finally dans des fonctions ayant des exigences de performances critiques

try-catch-finally en créera un nouveau dans la portée actuelle à chaque fois qu'il est exécuté . Variable utilisée pour attribuer des exceptions dans l'exécution d'une instruction.
La gestion des exceptions doit être effectuée à un niveau élevé dans le script, là où les exceptions ne se produisent pas très fréquemment, comme en dehors d'une boucle.
Si possible, essayez d'éviter complètement d'utiliser try-catch-finally.

Code qui s'exécute lentement :

var object = ['foo', 'bar'], i; 
for (i = 0; i < object.length; i++) { 
try { 
// do something that throws an exception 
} catch (e) { 
// handle exception 
} 
}
Copier après la connexion

Code qui s'exécute plus rapidement :

var object = [&#39;foo&#39;, &#39;bar&#39;], i; 
try { 
for (i = 0; i < object.length; i++) { 
// do something 
} 
} catch (e) { 
// handle exception 
}
Copier après la connexion


Évitez d'utiliser des variables globales
Si vous utilisez des variables globales dans une fonction ou une autre portée, le moteur de script doit parcourir toute la portée pour les trouver.
Les variables de portée globale existent tout au long du cycle de vie du script, et celles de portée locale seront détruites lorsque la portée locale est perdue.

Code qui s'exécute lentement :

var i, 
str = &#39;&#39;; 
function globalScope() { 
for (i=0; i < 100; i++) { 
str += i; // here we reference i and str in global scope which is slow 
} 
} 
globalScope();
Copier après la connexion

Code qui s'exécute plus rapidement :

function localScope() { 
var i, 
str = &#39;&#39;; 
for (i=0; i < 100; i++) { 
str += i; // i and str in local scope which is faster 
} 
} 
localScope();
Copier après la connexion


Éviter les problèmes de performances une boucle for-in
for-in dans une fonction critique nécessite que le moteur de script crée une liste de toutes les propriétés énumérables et vérifie s'il s'agit d'un double de la précédente.
Si le code dans la portée de votre boucle for ne modifie pas le tableau, vous pouvez pré-calculer la longueur du tableau et l'utiliser pour parcourir le tableau dans la boucle for.

Code qui s'exécute lentement :

var sum = 0; 
for (var i in arr) { 
sum += arr[i]; 
}
Copier après la connexion

Code qui s'exécute plus rapidement :

var sum = 0; 
for (var i = 0, len = arr.length; i < len; i++) { 
sum += arr[i]; 
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!