Maison  >  Article  >  interface Web  >  Résumer certaines fonctions et instructions à éviter d'utiliser en JavaScript

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

伊谢尔伦
伊谢尔伦original
2017-07-26 13:26:061310parcourir

É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');

Code qui s'exécute plus rapidement :

function addMethod(object, property, func) { 
object[property] = func; 
} 
addMethod(myObj, 'methodName', function () { 'this.localVar=foo'; });


É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'; 
}

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';


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 
} 
}

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 
}


É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();

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();


É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]; 
}

Code qui s'exécute plus rapidement :

var sum = 0; 
for (var i = 0, len = arr.length; i < len; i++) { 
sum += arr[i]; 
}

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!

Déclaration:
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