Maison interface Web js tutoriel Résumé de l'amélioration de l'efficacité de l'exécution de JS

Résumé de l'amélioration de l'efficacité de l'exécution de JS

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

Cette fois, je vais vous apporter un résumé de l'amélioration de l'efficacité de l'exécution de JS et quelles sont les précautions pour améliorer l'efficacité de l'exécution de JS. Voici des cas pratiques, jetons un coup d'oeil.

1. Utilisez des symboles logiques && ou || pour faire des jugements conditionnels

var foo = 10; 
foo == 10 && doSomething(); // 如果 foo == 10 则执行 doSomething(); 
foo == 5 || doSomething(); // 如果 foo != 5 则执行doSomething();
Copier après la connexion

"||" Valeur par défaut du paramètre de fonction

Function doSomething(arg1){ 
 Arg1 = arg1 || 10; // 如果 arg1为设置那么 Arg1=10
}
Copier après la connexion

2 Utilisez la méthode map() pour parcourir le tableau .

var squares = [1,2,3,4].map(function (val) { 
 return val * val; 
}); 
// 运行结果为 [1, 4, 9, 16]
Copier après la connexion

3. Arrondi aux décimales

var num =2.443242342; 
num = num.toFixed(4); // 保留四位小数位 2.4432
Copier après la connexion

4.

0.1 + 0.2 === 0.3 // is false 
9007199254740992 + 1 // = 9007199254740992 
9007199254740992 + 2 // = 9007199254740994
Copier après la connexion
0,1+0,2 est égal à 0,30000000000000004. Pourquoi cela se produit-il ? Selon la norme IEEE754, tout ce que vous devez savoir est que tous les nombres JavaScript sont représentés sous forme de nombres à virgule flottante en binaire 64 bits. Les développeurs peuvent utiliser les méthodes toFixed() et toPrecision() pour résoudre ce problème.

5. Utilisez la boucle for-in pour vérifier les propriétés de l'objet traversé

Le code suivant sert principalement à éviter de traverser les propriétés de l'objet.

for (var name in object) { 
 if (object.hasOwnProperty(name)) { 
  // 执行代码
 } 
}
Copier après la connexion

6. Opérateur virgule

var a = 0; 
var b = ( a++, 99 ); 
console.log(a); // a 为 1 
console.log(b); // b 为 99
Copier après la connexion

7. Lors de l'utilisation des sélecteurs jQuery, les développeurs peuvent mettre en cache les éléments DOM

var navright = document.querySelector('#right'); 
var navleft = document.querySelector('#left'); 
var navup = document.querySelector('#up'); 
var navdown = document.querySelector('#down');
Copier après la connexion

8 Transmettez les paramètres à isFinite() Validez avant

isFinite(0/0) ; // false 
isFinite("foo"); // false 
isFinite("10"); // true 
isFinite(10); // true 
isFinite(undifined); // false 
isFinite(); // false 
isFinite(null); // true !!!
Copier après la connexion
9. Évitez l'indexation négative dans les tableaux

Assurez-vous que les paramètres transmis à la méthode indexOf() ne sont pas négatif.

var numbersArray = [1,2,3,4,5]; 
var from = numbersArray.indexOf("foo") ; // from is equal to -1 
numbersArray.splice(from,2); // will return [5]
Copier après la connexion

10. Sérialisation et désérialisation (à l'aide de 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 */
Copier après la connexion
11. Le constructeur de fonction

eval() et le constructeur de fonction sont appelés moteurs de script à chaque fois qu'ils sont exécutés, le code source doit être converti en code exécutable.

var func1 = new Function(functionCode); 
var func2 = eval(functionCode);
Copier après la connexion
12. Évitez d'utiliser la méthode with()

Si vous utilisez with() pour insérer des variables dans la zone globale, puis, une fois qu'une variable porte le même nom, il est facile de la confondre et de la remplacer.

13. Évitez d'utiliser une boucle for-in dans un tableau

utilisez-la plutôt comme ceci :

comme ceci serait mieux :

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

Parce que i et len ​​sont les premières instructions de la boucle, elles seront exécutées une fois pour chaque instanciation, donc l'exécution sera plus rapide que la suivante :

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

Pourquoi ? La longueur du tableau, arrayynNumbers, est recalculée à chaque itération de boucle.

for (var i = 0; i < arrayNumbers.length; i++)
Copier après la connexion

14. Ne transmettez pas de chaînes aux méthodes setTimeout() et setInterval()

Si vous transmettez des chaînes à ces deux méthodes, alors la chaîne sera recalculée comme eval, ce qui sera plus lent Au lieu de l'utiliser comme ceci :

Au lieu de cela, elle devrait être utilisée comme ceci :

setInterval(&#39;doSomethingPeriodically()&#39;, 1000); 
setTimeOut(&#39;doSomethingAfterFiveSeconds()&#39;, 5000);
Copier après la connexion

.
setInterval(doSomethingPeriodically, 1000); 
setTimeOut(doSomethingAfterFiveSeconds, 5000);
Copier après la connexion
15. Utilisez des instructions switch/case au lieu d'instructions if/else plus longues

S'il y a plus de 2 cas, alors l'utilisation de switch/case sera beaucoup plus rapide, et le code semble plus élégant.

16. Lorsque vous rencontrez une plage numérique, vous pouvez utiliser switch/casne

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"
Copier après la connexion
17.

Créer un objet dont les propriétés sont un objet donné Vous pouvez écrire une fonction comme celle-ci pour créer un objet dont les propriétés sont un objet donné, comme ceci :

function clone(object) { 
 function OneShotConstructor(){}; 
 OneShotConstructor.prototype= object; 
 return new OneShotConstructor(); 
} 
clone(Array).prototype ; // []
Copier après la connexion
18. Une fonction d'échappement HTML

function escapeHTML(text) { 
 var replacements= {"<": "<", ">": ">","&": "&", "\"": """};      
 return text.replace(/[<>&"]/g, function(character) { 
  return replacements[character]; 
 }); 
}
Copier après la connexion
19. Dans un éviter d'utiliser try-catch-finally

en boucle

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

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

应该这样使用:

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

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();
Copier après la connexion

此外,通常你应该完全避免同步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); 
 } 
}
Copier après la connexion

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

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

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

var min = Math.min(a,b); 
A.push(v);
Copier après la connexion

基本操作方式:

var min = a < b ? a b; 
A[A.length] = v;
Copier après la connexion

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

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

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

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

推荐阅读:

JS中时间单位比较的方法

JS操作JSON详细介绍

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide pratique de développement à distance PyCharm : améliorer l'efficacité du développement Guide pratique de développement à distance PyCharm : améliorer l'efficacité du développement Feb 23, 2024 pm 01:30 PM

PyCharm est un puissant environnement de développement intégré (IDE) Python largement utilisé par les développeurs Python pour l'écriture de code, le débogage et la gestion de projets. Dans le processus de développement réel, la plupart des développeurs seront confrontés à différents problèmes, tels que comment améliorer l'efficacité du développement, comment collaborer avec les membres de l'équipe sur le développement, etc. Cet article présentera un guide pratique du développement à distance de PyCharm pour aider les développeurs à mieux utiliser PyCharm pour le développement à distance et à améliorer l'efficacité du travail. 1. Travail de préparation dans PyCh

Résumer l'utilisation de la fonction system() dans le système Linux Résumer l'utilisation de la fonction system() dans le système Linux Feb 23, 2024 pm 06:45 PM

Résumé de la fonction system() sous Linux Dans le système Linux, la fonction system() est une fonction très couramment utilisée, qui permet d'exécuter des commandes en ligne de commande. Cet article présentera la fonction system() en détail et fournira quelques exemples de code spécifiques. 1. Utilisation de base de la fonction system(). La déclaration de la fonction system() est la suivante : intsystem(constchar*command) où le paramètre de commande est un caractère.

Déploiement privé de Stable Diffusion pour jouer avec le dessin IA Déploiement privé de Stable Diffusion pour jouer avec le dessin IA Mar 12, 2024 pm 05:49 PM

StableDiffusion est un modèle d'apprentissage profond open source. Sa fonction principale est de générer des images de haute qualité via des descriptions textuelles et prend en charge des fonctions telles que la génération de graphiques, la fusion de modèles et la formation de modèles. L'interface de fonctionnement du modèle est visible dans la figure ci-dessous. Comment générer une image. Ce qui suit est une introduction au processus de création d'une image d'un cerf buvant de l'eau. Lors de la génération d'une image, elle est divisée en mots d'invite et en mots d'invite négatifs. Lors de la saisie des mots d'invite, vous devez la décrire. clairement et essayez de décrire la scène, l’objet, le style et la couleur que vous souhaitez en détail. Par exemple, au lieu de simplement dire « le cerf boit de l'eau », il est écrit « un ruisseau, à côté d'arbres denses, et il y a des cerfs qui boivent de l'eau à côté du ruisseau ». Les mots d'invite négatifs vont dans la direction opposée. aucun bâtiment, aucune personne, aucun pont, aucune clôture et une description trop vague peuvent conduire à des résultats inexacts.

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Maîtrisez Python pour améliorer l'efficacité du travail et la qualité de vie Maîtrisez Python pour améliorer l'efficacité du travail et la qualité de vie Feb 18, 2024 pm 05:57 PM

Titre : Python rend la vie plus pratique : maîtrisez ce langage pour améliorer l'efficacité du travail et la qualité de vie. En tant que langage de programmation puissant et facile à apprendre, Python devient de plus en plus populaire à l'ère numérique d'aujourd'hui. Non seulement pour écrire des programmes et effectuer des analyses de données, Python peut également jouer un rôle important dans notre vie quotidienne. La maîtrise de cette langue peut non seulement améliorer l'efficacité du travail, mais également améliorer la qualité de vie. Cet article utilisera des exemples de code spécifiques pour démontrer la large application de Python dans la vie et aider les lecteurs

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Masque de sous-réseau : rôle et impact sur l'efficacité de la communication réseau Masque de sous-réseau : rôle et impact sur l'efficacité de la communication réseau Dec 26, 2023 pm 04:28 PM

Le rôle du masque de sous-réseau et son impact sur l'efficacité de la communication réseau Introduction : Avec la popularité d'Internet, la communication réseau est devenue un élément indispensable de la société moderne. Dans le même temps, l'efficacité de la communication en réseau est également devenue l'un des centres d'attention des gens. Dans le processus de création et de gestion d'un réseau, le masque de sous-réseau est une option de configuration importante et basique, qui joue un rôle clé dans la communication réseau. Cet article présentera le rôle du masque de sous-réseau et son impact sur l'efficacité des communications réseau. 1. Définition et fonction du masque de sous-réseau Masque de sous-réseau (subnetmask)

Apprenez à utiliser le stockage de sessions pour améliorer l'efficacité du développement front-end Apprenez à utiliser le stockage de sessions pour améliorer l'efficacité du développement front-end Jan 13, 2024 am 11:56 AM

Pour maîtriser le rôle de sessionStorage et améliorer l'efficacité du développement front-end, des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet, le domaine du développement front-end évolue également chaque jour. Lors du développement front-end, nous devons souvent traiter de grandes quantités de données et les stocker dans le navigateur pour une utilisation ultérieure. SessionStorage est un outil de développement frontal très important qui peut nous fournir des solutions de stockage local temporaire et améliorer l'efficacité du développement. Cet article présentera le rôle de sessionStorage,

See all articles