Heim Web-Frontend js-Tutorial Zusammenfassung der Verbesserung der JS-Ausführungseffizienz

Zusammenfassung der Verbesserung der JS-Ausführungseffizienz

Apr 23, 2018 am 10:51 AM
javascript 总结 效率

Dieses Mal werde ich Ihnen eine Zusammenfassung der Verbesserung der JS-Ausführungseffizienz und der Vorsichtsmaßnahmen zur Verbesserung der JS-Ausführungseffizienz geben. Hier sind praktische Fälle, werfen wir einen Blick darauf.

1. Verwenden Sie logische Symbole && oder ||, um

var foo = 10; 
foo == 10 && doSomething(); // 如果 foo == 10 则执行 doSomething(); 
foo == 5 || doSomething(); // 如果 foo != 5 则执行doSomething();
Nach dem Login kopieren
zu erstellen

Standardwert des Funktionsparameters

Function doSomething(arg1){ 
 Arg1 = arg1 || 10; // 如果 arg1为设置那么 Arg1=10
}
Nach dem Login kopieren

2. Verwenden Sie die Methode „map()“, um das Array zu durchlaufen

var squares = [1,2,3,4].map(function (val) { 
 return val * val; 
}); 
// 运行结果为 [1, 4, 9, 16]
Nach dem Login kopieren

3. Auf Dezimalstellen runden

var num =2.443242342; 
num = num.toFixed(4); // 保留四位小数位 2.4432
Nach dem Login kopieren

4. Gleitkommaproblem

0.1 + 0.2 === 0.3 // is false 
9007199254740992 + 1 // = 9007199254740992 
9007199254740992 + 2 // = 9007199254740994
Nach dem Login kopieren
0,1+0,2 entspricht 0,30000000000000004. Warum passiert das? Gemäß dem IEEE754-Standard müssen Sie lediglich wissen, dass alle JavaScript-Zahlen als Gleitkommazahlen in 64-Bit-Binärform dargestellt werden. Entwickler können dieses Problem mit den Methoden toFixed() und toPrecision() lösen.

5. Verwenden Sie die For-In-Schleife, um die durchlaufenen Objekteigenschaften zu überprüfen

Der folgende Code dient hauptsächlich dazu, das Durchlaufen von Objekteigenschaften zu vermeiden.

for (var name in object) { 
 if (object.hasOwnProperty(name)) { 
  // 执行代码
 } 
}
Nach dem Login kopieren

6. Komma-Operator

var a = 0; 
var b = ( a++, 99 ); 
console.log(a); // a 为 1 
console.log(b); // b 为 99
Nach dem Login kopieren

7. Cache-Variablen berechnen oder abfragen

Bei Verwendung von jQuery-Selektoren können Entwickler DOM-Elemente zwischenspeichern

var navright = document.querySelector('#right'); 
var navleft = document.querySelector('#left'); 
var navup = document.querySelector('#up'); 
var navdown = document.querySelector('#down');
Nach dem Login kopieren

8. Übergeben Sie die Parameter an isFinite(). Validieren Sie vor

isFinite(0/0) ; // false 
isFinite("foo"); // false 
isFinite("10"); // true 
isFinite(10); // true 
isFinite(undifined); // false 
isFinite(); // false 
isFinite(null); // true !!!
Nach dem Login kopieren

9. Vermeiden Sie negative Indizierung in Arrays

var numbersArray = [1,2,3,4,5]; 
var from = numbersArray.indexOf("foo") ; // from is equal to -1 
numbersArray.splice(from,2); // will return [5]
Nach dem Login kopieren
Stellen Sie sicher, dass die an die indexOf()-Methode übergebenen Parameter nicht Negativ.

10. Serialisierung und Deserialisierung (mit JSON)

var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} }; 
var stringFromPerson = JSON.stringify(person); 
/* stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */ 
var personFromString = JSON.parse(stringFromPerson); 
/* personFromString is equal to person object */
Nach dem Login kopieren

11. Vermeiden Sie die Verwendung von eval() oder Der Funktionskonstruktor

eval() und der Funktionskonstruktor werden als Skript-Engines bezeichnet. Bei jeder Ausführung muss der Quellcode in ausführbaren Code umgewandelt werden.

var func1 = new Function(functionCode); 
var func2 = eval(functionCode);
Nach dem Login kopieren

12. Vermeiden Sie die Verwendung der with()-Methode

Wenn Sie with() zum Einfügen von Variablen im globalen Bereich verwenden, Sobald eine Variable denselben Namen hat, kann es leicht zu Verwechslungen und Überschreibungen kommen.

13. Vermeiden Sie die Verwendung einer For-In-Schleife in einem Array

und verwenden Sie sie stattdessen wie folgt:

var sum = 0; 
for (var i in arrayNumbers) { 
 sum += arrayNumbers[i]; 
}
Nach dem Login kopieren
so wäre es besser:

var sum = 0; 
for (var i = 0, len = arrayNumbers.length; i < len; i++) { 
 sum += arrayNumbers[i]; 
}
Nach dem Login kopieren
Da i und len die ersten Anweisungen in der Schleife sind, werden sie einmal für jede Instanziierung ausgeführt, sodass die Ausführung schneller ist als die folgenden:

for (var i = 0; i < arrayNumbers.length; i++)
Nach dem Login kopieren
Warum? Die Array-Länge arrayynNumbers wird bei jeder Schleifeniteration neu berechnet.

14. Übergeben Sie keine Zeichenfolgen an die Methoden setTimeout() und setInterval()

Wenn Sie Zeichenfolgen an diese beiden Methoden übergeben, dann Die Zeichenfolge wird wie eval neu berechnet, was langsamer ist, anstatt sie wie folgt zu verwenden:

setInterval(&#39;doSomethingPeriodically()&#39;, 1000); 
setTimeOut(&#39;doSomethingAfterFiveSeconds()&#39;, 5000);
Nach dem Login kopieren
Stattdessen sollte sie wie folgt verwendet werden:

setInterval(doSomethingPeriodically, 1000); 
setTimeOut(doSomethingAfterFiveSeconds, 5000);
Nach dem Login kopieren

15. Verwenden Sie switch/case-Anweisungen anstelle längerer if/else-Anweisungen

Wenn es mehr als 2 Fälle gibt, ist die Verwendung von switch/case viel schneller und der Code sieht eleganter aus.

16. Wenn Sie auf einen numerischen Bereich stoßen, können Sie switch/casne verwenden

function getCategory(age) { 
 var category = ""; 
 switch (true) { 
  case isNaN(age): 
   category = "not an age"; 
   break; 
  case (age >= 50): 
   category = "Old"; 
   break; 
  case (age <= 20): 
   category = "Baby"; 
   break; 
  default: 
   category = "Young"; 
   break; 
 }; 
 return category; 
} 
getCategory(5); // 返回 "Baby"
Nach dem Login kopieren

17. Erstellen Sie ein Objekt , dessen Eigenschaften ein bestimmtes Objekt sind

Sie können eine Funktion wie diese schreiben, um ein Objekt zu erstellen, dessen Eigenschaften ein bestimmtes Objekt sind, etwa so:

function clone(object) { 
 function OneShotConstructor(){}; 
 OneShotConstructor.prototype= object; 
 return new OneShotConstructor(); 
} 
clone(Array).prototype ; // []
Nach dem Login kopieren

18. Eine HTML-Escaper-Funktion

function escapeHTML(text) { 
 var replacements= {"<": "<", ">": ">","&": "&", "\"": """};      
 return text.replace(/[<>&"]/g, function(character) { 
  return replacements[character]; 
 }); 
}
Nach dem Login kopieren

19. Vermeiden Sie die Verwendung von try-catch-finally in Schleife

try-catch-finally在当前范围里运行时会创建一个新的变量,在执行catch时,捕获异常对象会赋值给变量。
不要这样使用:

var object = ['foo', 'bar'], i; 
for (i = 0, len = object.length; i <len; i++) { 
 try { 
  // 执行代码,如果出错将被捕获
 } 
 catch (e) {  
  // 获取错误,并执行代码
 } 
}
Nach dem Login kopieren

应该这样使用:

var object = ['foo', 'bar'], i; 
try { 
 for (i = 0, len = object.length; i <len; i++) { 
  // 执行代码,如果出错将被捕获
 } 
} 
catch (e) {  
 // 获取错误,并执行代码
}
Nach dem Login kopieren

20.给XMLHttpRequests设置timeouts

如果一个XHR需要花费太长时间,你可以终止链接(例如网络问题),通过给XHR使用setTimeout()解决。

var xhr = new XMLHttpRequest (); 
xhr.onreadystatechange = function () { 
 if (this.readyState == 4) { 
  clearTimeout(timeout); 
  // 执行代码
 } 
} 
var timeout = setTimeout( function () { 
 xhr.abort(); // call error callback 
}, 60*1000 /* 设置1分钟后执行*/ ); 
xhr.open('GET', url, true); 
 
xhr.send();
Nach dem Login kopieren

此外,通常你应该完全避免同步Ajax调用。

21.处理WebSocket超时

一般来说,当创建一个WebSocket链接时,服务器可能在闲置30秒后链接超时,在闲置一段时间后,防火墙也可能会链接超时。

为了解决这种超时问题,你可以定期地向服务器发送空信息,在代码里添加两个函数:一个函数用来保持链接一直是活的,另一个用来取消链接是活的,使用这种方法,你将控制超时问题。

添加一个timeID……

var timerID = 0; 
function keepAlive() { 
 var timeout = 15000; 
 if (webSocket.readyState == webSocket.OPEN) { 
  webSocket.send(''); 
 } 
 timerId = setTimeout(keepAlive, timeout); 
} 
function cancelKeepAlive() { 
 if (timerId) { 
  cancelTimeout(timerId); 
 } 
}
Nach dem Login kopieren

keepAlive()方法应该添加在WebSocket链接方法onOpen()的末端,cancelKeepAlive()方法放在onClose()方法下面。

22.记住,最原始的操作要比函数调用快

对于简单的任务,最好使用基本操作方式来实现,而不是使用函数调用实现。
例如

var min = Math.min(a,b); 
A.push(v);
Nach dem Login kopieren

基本操作方式:

var min = a < b ? a b; 
A[A.length] = v;
Nach dem Login kopieren

23.编码时注意代码的美观、可读

JavaScript是一门非常好的语言,尤其对于前端工程师来说,JavaScript执行效率也非常重要。

我们在编写JavaScript程序时注意一些小细节,掌握一些常用的实用小技巧往往会使程序更简捷,程序执行效率更高

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

JS中时间单位比较的方法

JS操作JSON详细介绍

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verbesserung der JS-Ausführungseffizienz. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

Praktischer Leitfaden zur PyCharm-Remote-Entwicklung: Verbessern Sie die Entwicklungseffizienz Praktischer Leitfaden zur PyCharm-Remote-Entwicklung: Verbessern Sie die Entwicklungseffizienz Feb 23, 2024 pm 01:30 PM

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung (IDE), die von Python-Entwicklern häufig zum Schreiben von Code, zum Debuggen und zum Projektmanagement verwendet wird. Im eigentlichen Entwicklungsprozess werden die meisten Entwickler mit unterschiedlichen Problemen konfrontiert sein, z. B. wie die Entwicklungseffizienz verbessert werden kann, wie mit Teammitgliedern bei der Entwicklung zusammengearbeitet werden kann usw. In diesem Artikel wird ein praktischer Leitfaden zur Remote-Entwicklung von PyCharm vorgestellt, der Entwicklern dabei hilft, PyCharm besser für die Remote-Entwicklung zu nutzen und die Arbeitseffizienz zu verbessern. 1. Vorbereitungsarbeit in PyCh

Fassen Sie die Verwendung der Funktion system() im Linux-System zusammen Fassen Sie die Verwendung der Funktion system() im Linux-System zusammen Feb 23, 2024 pm 06:45 PM

Zusammenfassung der Funktion system() unter Linux Im Linux-System ist die Funktion system() eine sehr häufig verwendete Funktion, mit der Befehlszeilenbefehle ausgeführt werden können. In diesem Artikel wird die Funktion system() ausführlich vorgestellt und einige spezifische Codebeispiele bereitgestellt. 1. Grundlegende Verwendung der Funktion system() Die Deklaration der Funktion system() lautet wie folgt: intsystem(constchar*command);

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Privater Einsatz von Stable Diffusion zum Spielen mit KI-Zeichnung Privater Einsatz von Stable Diffusion zum Spielen mit KI-Zeichnung Mar 12, 2024 pm 05:49 PM

StableDiffusion ist ein Open-Source-Deep-Learning-Modell. Seine Hauptfunktion besteht in der Generierung hochwertiger Bilder durch Textbeschreibungen und unterstützt Funktionen wie Diagrammgenerierung, Modellzusammenführung und Modelltraining. Die Bedienoberfläche des Modells ist in der Abbildung unten zu sehen. So erstellen Sie ein Bild: Beim Erstellen eines Bildes wird es in Aufforderungswörter und negative Aufforderungswörter unterteilt Versuchen Sie, die gewünschte Szene, das gewünschte Objekt, den gewünschten Stil und die gewünschte Farbe klar zu beschreiben. Anstatt nur zu sagen: „Der Hirsch trinkt Wasser“, heißt es „ein Bach, umgeben von dichten Bäumen, und neben dem Bach gibt es Hirsche, die Wasser trinken“. Die negativen Aufforderungswörter lauten beispielsweise in der entgegengesetzten Richtung: Keine Gebäude, keine Menschen, keine Brücken, keine Zäune und eine zu vage Beschreibung können zu ungenauen Ergebnissen führen.

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

Beherrschen Sie Python, um die Arbeitseffizienz und Lebensqualität zu verbessern Beherrschen Sie Python, um die Arbeitseffizienz und Lebensqualität zu verbessern Feb 18, 2024 pm 05:57 PM

Titel: Python macht das Leben bequemer: Beherrschen Sie diese Sprache, um die Arbeitseffizienz und Lebensqualität zu verbessern. Als leistungsstarke und leicht zu erlernende Programmiersprache erfreut sich Python im heutigen digitalen Zeitalter immer größerer Beliebtheit. Python kann nicht nur zum Schreiben von Programmen und zur Durchführung von Datenanalysen eine große Rolle in unserem täglichen Leben spielen. Die Beherrschung dieser Sprache kann nicht nur die Arbeitseffizienz verbessern, sondern auch die Lebensqualität verbessern. In diesem Artikel werden spezifische Codebeispiele verwendet, um die breite Anwendung von Python im Leben zu demonstrieren und den Lesern zu helfen

Erfahren Sie, wie Sie Sessionstorage verwenden, um die Effizienz der Front-End-Entwicklung zu verbessern Erfahren Sie, wie Sie Sessionstorage verwenden, um die Effizienz der Front-End-Entwicklung zu verbessern Jan 13, 2024 am 11:56 AM

Um die Rolle von sessionStorage zu beherrschen und die Effizienz der Front-End-Entwicklung zu verbessern, sind spezifische Codebeispiele erforderlich. Mit der rasanten Entwicklung des Internets verändert sich auch der Bereich der Front-End-Entwicklung von Tag zu Tag. Bei der Frontend-Entwicklung müssen wir häufig große Datenmengen verarbeiten und für die spätere Verwendung im Browser speichern. SessionStorage ist ein sehr wichtiges Front-End-Entwicklungstool, das uns temporäre lokale Speicherlösungen bereitstellen und die Entwicklungseffizienz verbessern kann. In diesem Artikel wird die Rolle von sessionStorage vorgestellt.

See all articles