


45 conseils pratiques que les programmeurs JavaScript devraient connaître_javascript tips
Comme vous le savez, JavaScript est le langage de programmation numéro un au monde. C'est le langage du Web, le langage des applications mobiles hybrides (comme PhoneGap ou Appcelerator) et le langage côté serveur (comme NodeJS). ou Wakanda), et a de nombreuses autres implémentations. En même temps, c'est aussi un langage d'éveil pour de nombreux novices, car il peut non seulement afficher un simple message d'alerte sur le navigateur, mais peut également être utilisé pour contrôler un robot (à l'aide de nodebot, ou nodruino). Les développeurs qui maîtrisent JavaScript et peuvent écrire du code organisé, standardisé et efficace en termes de performances sont devenus la cible du marché des talents.
Il est à noter que les extraits de code de cet article ont été testés sur le dernier Google Chrome (numéro de version 30), qui utilise le moteur JavaScript V8 (V8 3.20.17.15).
1 – N'oubliez pas d'utiliser le mot-clé var lors de l'attribution d'une valeur à une variable pour la première fois
L'attribution d'une valeur à une variable non définie entraînera la création d'une variable globale . Évitez les variables globales.
2 – Utilisez === au lieu de ==
== (ou !=) l'opérateur effectuera automatiquement la conversion de type si nécessaire. L'opération === (ou !==) n'effectue aucune conversion. Il compare les valeurs et les types et est également considéré comme plus rapide que ==.
[10] === 10 // est faux
[10] == 10 // est vrai
'10' == 10 // est vrai
'10' === 10 // est faux
[] == 0 // est vrai
[] === 0 // est faux
'' == faux // est vrai mais vrai == "a" est faux
'' === faux // est false
3 – Utiliser des fermetures pour implémenter des variables privées
function Person(name, age) {
this.getName = function() { return name;
this.setName = function(newName) { name = newName; } ;
this.getAge = function() { return age; };
this.setAge = function(newAge) { age = newAge; initialisé dans le constructeur Attributs
var occupation;
this.getOccupation = function() { return occupation; };
this.setOccupation = function(newOcc) { occupation =
newOcc; >}
4 – Utiliser des points-virgules à la fin des instructions
Utiliser des points-virgules à la fin des instructions est une bonne pratique. Vous ne serez pas averti si vous oubliez de l'écrire, car dans la plupart des cas, l'interpréteur JavaScript ajoutera le point-virgule pour vous. 5 – Créer le constructeur de l'objet
var Saad = new Person("Saad", "Mousliki") ;
6 – Utilisez typeof, instanceof et constructeur avec précaution
7 – Créer une fonction d'appel automatique
C'est ce qu'on appelle souvent une fonction anonyme auto-invoquée ou une expression de fonction d'appel immédiat (IIFE-Expression de fonction immédiatement invoquée). Il s'agit d'une fonction qui s'exécute automatiquement immédiatement après la création, généralement comme suit :
(function(a,b){
var result = a b;
résultat de retour;
})(10,20)
8- Obtenez un élément aléatoire du tableau
var randomItem = items[ Math.floor( Math.random() * items.length)];[code]
9 – Obtenez un nombre aléatoire dans une plage spécifique
Cet extrait de code est très utile lorsque vous souhaitez pour générer des données de test utiles, comme une valeur de salaire aléatoire entre les valeurs minimales et maximales.
[code]var x = Math.floor(Math.random() * (max - min 1)) min;
10 – généré entre 0 et la valeur maximale définie Un tableau de nombres
for( var i=1;numbersArray.push(i ) < max;); // nombres = [0,1,2,3 ... 100]
11 – Générer une chaîne alphanumérique aléatoire
var rdmstring = "";
for( ; rdmString.length < len; rdmString = Math.random().toString(36).substr(2));
return rdmString.substr(0, len);
}
12 – brouiller un tableau de nombres
numéros = number.sort( function(){ return Math.random() - 0.5});
/* les numéros du tableau seront égaux par exemple à [120, 5, 228, -215, 400, 458, -85411 , 122205] */
13 – Fonction trim de String
Il existe une fonction trim classique en Java, C#, PHP et bien d'autres langages, qui est utilisée pour supprimer les espaces dans les chaînes . Une telle fonction n'existe pas en JavaScript, nous devons donc ajouter cette fonction à l'objet String.
String.prototype.trim = function() {return this .replace(/^s |s $/g, "");};//Supprimer les espaces de début et de fin de la chaîne, à l'exclusion des espaces internes de la chaîne
14 – Ajouter un tableau Aller dans un autre tableau
var array2 = ["Doe" , 555 , 100];
Array.prototype.push. apply(array1, array2);
/* array1 sera égal à [12, "foo", {name "Joe"}, -2458, "Doe", 555, 100] */
//In en fait, concat peut directement implémenter une connexion à deux tableaux, mais sa valeur de retour est un nouveau tableau. Voici le changement direct vers array1
15 – Convertir l'objet arguments en tableau
l'objet arguments est un objet de type tableau, mais pas un vrai tableau
16 – Vérifiez si l'argument est un nombre (nombre)
return !isNaN(parseFloat(n)) && isFinite(n);
}
17 – Vérifiez si le paramètre est un tableau
return Object.prototype. toString.call(obj) === '[object Array ]' ;
}
Remarque : si la méthode toString() est remplacée, vous ne pourrez pas obtenir les résultats souhaités en utilisant cette technique. Ou vous pouvez utiliser :
Array.isArray (obj); // Il s'agit d'une nouvelle méthode de tableau
Si vous n'utilisez pas plusieurs frames, vous pouvez également utiliser la méthode instanceof. Mais si vous disposez de plusieurs contextes, vous obtiendrez de mauvais résultats.
document.body.appendChild(myFrame);
var myArray = window.frames[window.frames.length-1].Array;
var arr = new myArray(a,b,10 ); / / [a,b,10]
// instanceof ne fonctionnera pas correctement, myArray perd son constructeur
// le constructeur n'est pas partagé entre les frames
arr instanceof Array;
18 – Obtenez la valeur maximale ou minimale dans un tableau de nombres
var maxInNumbers = Math.max.apply(Math, nombres);
var minInNumbers = Math.min.apply(Math, nombres);
//Note du traducteur : la technique de transmission de paramètres à l'aide de la méthode Function.prototype.apply est utilisée ici
19 – Effacer un tableau
myArray.length = 0; // myArray sera égal à [].
20 – Ne pas utiliser delete pour supprimer des éléments d'un tableau .
Utilisez splice au lieu de delete pour supprimer un élément d'un tableau. L'utilisation de delete remplace uniquement l'élément d'origine par undefined, mais ne le supprime pas réellement du tableau.
N'utilisez pas cette méthode :
items.length; // renvoie 11
supprime les éléments[3] ; // renvoie true
items.length; // renvoie 11
/* les éléments seront égaux à [12, 548, "a", non défini × 1, 5478, "foo", 8852, non défini × 1 , "Doe", 2154, 119] */
et utilisez :
items.length // return; 11
items.splice( 3,1) ;
items.length; // renvoie 10
/* les éléments seront égaux à [12, 548, "a", 5478, "foo", 8852 , undefined × 1, "Doe" , 2154, 119] */
la méthode delete doit être utilisée pour supprimer un attribut d'un objet.
21 – Utiliser la longueur pour tronquer un tableau
De la même manière que pour effacer le tableau ci-dessus, nous utilisons la propriété length pour tronquer un tableau.
myArray.length = 4; // myArray sera égal à [12, 222, 1000, 124].
De plus, si vous définissez la longueur d'un tableau sur une valeur plus grande une par rapport à sa valeur actuelle, la longueur du tableau sera modifiée et de nouveaux éléments non définis seront ajoutés. La longueur d'un tableau n'est pas une propriété en lecture seule.
myArray[myArray.length - 1]; // undefined
22 – Utilisez ET/OU logique pour porter des jugements conditionnels
var foo = 10;
foo == 10 && doSomething(); // Équivalent à if (foo == 10) doSomething();
foo == 5 doSomething( ) ; // Équivalent à if (foo != 5) doSomething();
L'ET logique peut également être utilisé pour définir les valeurs par défaut des paramètres de fonction
function doSomething(arg1){
Arg1 = arg1 || 10 ; défini, Arg1 sera défini sur 10 par défaut
}
23 – Utilisez la méthode map() pour parcourir les éléments d'un tableau
return val * val;
});
// les carrés seront égaux à [1, 4, 9, 16]
24 – Arrondir un nombre à N décimal lieux
num = num.toFixed(4); / / num sera égal à 2,4432
25 – Problème en virgule flottante
9007199254740992 1 // est égal à 9007199254740992
9007199254740992 2 // est égal à 9007199254740994
Pourquoi cela se produit-il ? 0,1 0,2 est égal à 0,30000000000000004. Vous devez savoir que tous les nombres JavaScript sont représentés en interne sous forme de nombres à virgule flottante en binaire 64 bits, conformément à la norme IEEE 754. Pour plus d’introduction, vous pouvez lire cet article de blog. Vous pouvez résoudre ce problème en utilisant les méthodes toFixed() et toPrecision().
26 – Lorsque vous utilisez for-in pour parcourir les propriétés internes d'un objet, faites attention à vérifier les propriétés
L'extrait de code suivant peut éviter d'accéder aux propriétés du prototype lors de la traversée des propriétés d'un objet
for (var name in object) {
if (object.hasOwnProperty(name)) {
// faire quelque chose avec name
}
}
27 – Opérateur virgule
var a = 0;
var b = ( a , 99 );
console.log(a); // a sera égal à 1
console.log(b); b est égal à 99
28 – Cacher les variables qui nécessitent un calcul ou une interrogation
Pour les sélecteurs jQuery, il est préférable de mettre en cache ces éléments DOM.
var navleft = document.querySelector('#left');
var navup = document.querySelector('#up');
var navdown = document.querySelector('#down');
29 – Valider les paramètres avant d'appeler isFinite()
isFinite("foo"); // false
isFinite("10"); ); // vrai
isFinite(undifined); // false
isFinite(); // false
isFinite(null);
30 – éviter dans les tableaux Indices négatifs
numbersArray.splice(from,2); retourner [5]
Assurez-vous que l'argument lors de l'appel à indexOf n'est pas négatif.
31 – Sérialisation et désérialisation basées sur JSON
var stringFromPerson = JSON.stringify(person );
/* stringFromPerson est égal à "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */
var personFromString = JSON.parse(stringFromPerson);
/* personFromString est égal à l'objet personne */
32 – Évitez d'utiliser eval() et le constructeur de fonction
Utiliser eval et Function les constructeurs sont des opérations très coûteuses car à chaque fois ils appellent le moteur de script pour convertir le code source en code exécutable.
var func2 = eval(functionCode);
33 – Évitez d'utiliser with()
L'utilisation de with() insérera une variable globale. Par conséquent, les variables portant le même nom verront leurs valeurs écrasées et causeront des problèmes inutiles.
34 – Évitez d'utiliser for-in pour parcourir un tableau
Évitez d'utiliser ceci :
for (var i in arrayNumbers) {
sum = arrayNumbers[i];
}
Une meilleure façon est :
for (var i = 0, len = arrayNumbers.length; i < len; i ) {
sum = arrayNumbers[i];
}
L'avantage supplémentaire est que i et len sont tous les deux La valeur de la variable n'est exécutée qu'une seule fois, ce qui est plus efficace que la méthode suivante :
Pourquoi ? Parce que arrayNumbers.length sera calculé à chaque boucle.
35 – Transmettez des fonctions au lieu de chaînes lors de l'appel de setTimeout() et setInterval().
Si vous transmettez une chaîne à setTimeout() ou setInterval(), la chaîne sera analysée comme si vous utilisiez eval, ce qui prend beaucoup de temps.
Ne pas utiliser :
setInterval ('doSomethingPeriodically()', 1000);
setTimeOut('doSomethingAfterFiveSeconds()', 5000)
Et utilisez :
setInterval(doSomethingPeriodically, 1000);
setTimeOut(doSomethingAfterFiveSeconds, 5000);
36 – Utilisez l'instruction switch/case, et au lieu d'une longue liste de if/else
, lorsque vous jugez plus de 2 situations, l'utilisation de switch/case est plus efficace et plus élégante (plus facile à organiser le code). Mais n’utilisez pas switch/case lorsqu’il y a plus de 10 situations à juger.
37 – Utilisez switch/case pour juger de la plage numérique
Dans la situation suivante, il est raisonnable d'utiliser switch/case pour juger de la plage numérique :
function getCategory(age) {
varcategory = "";
switch (true) {
case isNaN(age):
category = "pas un âge";< category = "Bébé" ;
pause;
défaut :
catégorie = "Jeune";
pause;
};
retour catégorie;
}
getCategory(5) ; // renverra "Baby"
//Généralement, pour juger la plage numérique, il est plus approprié d'utiliser if/else. switch/case est plus adapté pour juger certaines valeurs
38 – Spécifier l'objet prototype pour l'objet créé
Il est possible d'écrire une fonction pour créer un objet avec des paramètres spécifiés comme prototype :
Copier le code
39 – une fonction d'échappement HTML
Copier le code
Évitez d'écrire comme ceci :
Le code est le suivant :var object = [ 'foo' , 'bar'], i;
for (i = 0, len = object.length; i
Copier le code
Le code est le suivant :
essayez {
for (i = 0, len = object .length; i
Après qu'une requête XHR ait pris beaucoup de temps (par exemple, en raison de problèmes de réseau), vous devrez peut-être abandonner la requête, vous pourrez alors utiliser setTimeout() avec l'appel XHR.
Copier le code
Le code est le suivant :var xhr = new XMLHttpRequest ();
xhr .onreadystatechange = function () {
if (this.readyState == 4) {
xhr.send();
De plus, vous devez généralement éviter complètement les requêtes Ajax synchrones.
42 - Gestion des délais d'attente WebSocket
Normalement, après la création d'une connexion WebSocket, le serveur expirera votre connexion après 30 secondes si vous n'avez aucune activité. Les pare-feu se déconnectent également après une période d'inactivité.
Pour éviter les problèmes de délai d'attente, vous devrez peut-être envoyer par intermittence des messages vides au serveur. Pour ce faire, vous pouvez ajouter les deux fonctions suivantes à votre code : une pour maintenir la connexion et une pour annuler le maintien de la connexion. Avec cette technique, vous pouvez contrôler le problème de délai d'attente.
Utiliser un timerID :
function keepAlive() {
var timeout = 15000;
if (webSocket.readyState == webSocket.OPEN) {
webSocket.send('');
}
timerId = setTimeout( keepAlive, timeout);
>
function CancelKeepAlive() {
if (timerId) {
CancelTimeout(timerId);
}
}
keepAlive() La méthode doit être ajoutée à la fin de la méthode onOpen() de la connexion webSOcket, et CancelKeepAlive() est ajoutée à la fin de la méthode onClose().
43 – Gardez à l’esprit que les opérateurs primitifs sont toujours plus efficaces que les appels de fonction. Utilisez vanillaJS.
Par exemple, n'utilisez pas :
A.push(v);
et utilisez :
A[A.length] = v;
44 – lors de l'encodage N'oubliez pas d'utiliser des outils de rangement de code . Utilisez JSLint et les outils de compression de code (minification) (tels que JSMin) avant de vous connecter. "Outil permettant de gagner du temps : outil d'embellissement et de formatage du code"
45 – JavaScript est incroyable.
Résumé
Je sais qu'il existe de nombreux autres conseils, astuces et bonnes pratiques, donc si vous avez autre chose que vous aimeriez ajouter ou si vous avez des commentaires ou des corrections sur ceux que j'ai partagés, n'hésitez pas à le dire dans les commentaires. .

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de réservation en ligne. À l'ère numérique d'aujourd'hui, de plus en plus d'entreprises et de services doivent fournir des fonctions de réservation en ligne. Il est crucial de mettre en place un système de réservation en ligne efficace et en temps réel. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de réservation en ligne et fournit des exemples de code spécifiques. 1. Qu'est-ce que WebSocket ? WebSocket est une méthode full-duplex sur une seule connexion TCP.

Introduction à l'utilisation de JavaScript et de WebSocket pour mettre en œuvre un système de commande en ligne en temps réel : avec la popularité d'Internet et les progrès de la technologie, de plus en plus de restaurants ont commencé à proposer des services de commande en ligne. Afin de mettre en œuvre un système de commande en ligne en temps réel, nous pouvons utiliser les technologies JavaScript et WebSocket. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut réaliser une communication bidirectionnelle en temps réel entre le client et le serveur. Dans le système de commande en ligne en temps réel, lorsque l'utilisateur sélectionne des plats et passe une commande

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

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

Utilisation : En JavaScript, la méthode insertBefore() est utilisée pour insérer un nouveau nœud dans l'arborescence DOM. Cette méthode nécessite deux paramètres : le nouveau nœud à insérer et le nœud de référence (c'est-à-dire le nœud où le nouveau nœud sera inséré).

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
