Heim  >  Artikel  >  Web-Frontend  >  Fassen Sie einige Funktionen und Anweisungen zusammen, deren Verwendung in JavaScript vermieden werden soll

Fassen Sie einige Funktionen und Anweisungen zusammen, deren Verwendung in JavaScript vermieden werden soll

伊谢尔伦
伊谢尔伦Original
2017-07-26 13:26:061309Durchsuche

Vermeiden Sie die Verwendung von Auswertungs- oder Funktionskonstruktoren

Die Verwendung von Auswertungs- oder Funktionskonstruktoren ist sehr teuer und erfordert eine Skript-Engine, die den Quellcode jedes Mal in ausführbaren Code konvertiert .
Darüber hinaus muss die Verwendung von eval zur Verarbeitung von Zeichenfolgen zur Laufzeit interpretiert werden.

Code, der langsam ausgeführt wird:

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

Code, der schneller ausgeführt wird:

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


Vermeiden Sie die Verwendung mit
Obwohl Praktisch, da zusätzliche Zeit für die Referenzsuche erforderlich ist, da der Bereichskontext zur Kompilierungszeit nicht bekannt ist.

Code, der langsam läuft:

with (test.object) { 
foo = 'Value of foo property of object'; 
bar = 'Value of bar property of object'; 
}

Code, der schneller läuft:

var myObj = test.object; 
myObj.foo = 'Value of foo property of object'; 
myObj.bar = 'Value of bar property of object';


Verwenden Sie try-catch-finally nicht in Funktionen mit kritischen Leistungsanforderungen

try-catch-finally erstellt bei jeder Ausführung eine neue Funktion im aktuellen Bereich . Variable, die zum Zuweisen von Ausnahmen bei der Anweisungsausführung verwendet wird.
Die Ausnahmebehandlung sollte auf einer hohen Ebene im Skript erfolgen, wo Ausnahmen nicht sehr häufig auftreten, beispielsweise außerhalb einer Schleife.
Wenn möglich, vermeiden Sie die Verwendung von try-catch-finally ganz.

Code, der langsam ausgeführt wird:

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

Code, der schneller ausgeführt wird:

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


Vermeiden Sie die Verwendung globaler Variablen
Wenn Sie globale Variablen in einer Funktion oder einem anderen Bereich verwenden, muss die Skript-Engine den gesamten Bereich durchlaufen, um sie zu finden.
Variablen im globalen Bereich bleiben während des gesamten Lebenszyklus des Skripts bestehen, und diejenigen im lokalen Bereich werden zerstört, wenn der lokale Bereich verloren geht.

Code, der langsam ausgeführt wird:

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, der schneller ausgeführt wird:

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


Vermeiden Sie Leistungsprobleme Eine for-in
for-in-Schleife in einer kritischen Funktion erfordert, dass die Skript-Engine eine Liste aller aufzählbaren Eigenschaften erstellt und prüft, ob es sich um ein Duplikat der vorherigen handelt.
Wenn der Code in Ihrem for-Schleifenbereich das Array nicht ändert, können Sie die Länge des Arrays vorab berechnen und damit das Array in der for-Schleife iterieren.

Code, der langsam läuft:

var sum = 0; 
for (var i in arr) { 
sum += arr[i]; 
}

Code, der schneller läuft:

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

Das obige ist der detaillierte Inhalt vonFassen Sie einige Funktionen und Anweisungen zusammen, deren Verwendung in JavaScript vermieden werden soll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn