Maison > interface Web > js tutoriel > le corps du texte

Évitez ces cinq erreurs Javascript

coldplay.xixi
Libérer: 2020-09-27 17:25:19
avant
2032 Les gens l'ont consulté

La colonne

Évitez ces cinq erreurs Javascript

javascript listera cinq conseils pour rendre votre code plus lisible et plus facile à maintenir.

Photo by Author

Lors de l'édition d'anciens projets, avez-vous déjà rencontré un code déroutant qui « se brise » dès qu'une nouvelle logique est ajoutée ? Bien sûr, nous y sommes tous allés. Afin de sauver le monde d'un code Javascript moins illisible, je dois vous montrer les cinq exemples suivants - mon pilier de la honte.

Utiliser la déstructuration de tableau pour obtenir plusieurs valeurs de retour d'une fonction

Si nous avons une fonction qui renvoie plusieurs valeurs, nous pouvons utiliser la déstructuration de tableau pour obtenir les valeurs. Le code est le suivant :

const func = () => {  const a = 1;  const b = 2;  const c = 3;  const d = 4; 
  return [a,b,c,d];
}const [a,b,c,d] = func();console.log(a,b,c,d); // Outputs: 1,2,3,4复制代码
Copier après la connexion

Bien que la méthode ci-dessus puisse réaliser une affectation, elle a quelques effets secondaires.

Lors de l'appel d'une fonction pour obtenir la valeur de retour a,b,c,d, nous devons faire attention à l'ordre dans lequel la valeur de retour est renvoyée. Une petite erreur ici pourrait être votre cauchemar de débogage.

En plus de prêter attention à la commande, nous ne pouvons pas simplement obtenir quelques-unes des valeurs de retour que nous voulons. Et si je veux seulement c,d ?

const func = () => {  const a = 1;  const b = 2;  const c = 3;  const d = 4;  return {a,b,c,d};
}const {c,d} = func();复制代码
Copier après la connexion
Copier après la connexion

Nous pouvons utiliser l'affectation de déstructuration d'objet à la place.

const func = () => {  const a = 1;  const b = 2;  const c = 3;  const d = 4;  return {a,b,c,d};
}const {c,d} = func();复制代码
Copier après la connexion
Copier après la connexion

Maintenant, nous pouvons choisir librement quelle fonction renvoie les valeurs que nous voulons.

Même si la fonction ajoute plus de valeurs de retour à l'avenir, le code de déstructuration de l'objet peut rester inchangé, rendant le code plus stable.

Aucune déstructuration d'objet n'est utilisée dans les paramètres d'entrée de fonction

Supposons que nous ayons une fonction dont le paramètre d'entrée est un objet et que le code dans la fonction doit utiliser les propriétés de cet objet. Une implémentation naïve est la suivante :

// badfunction getDaysRemaining(subscription) {  const startDate = subscription.startDate;  const endDate = subscription.endDate;  return endDate - startDate;
}复制代码
Copier après la connexion

Bien que cette solution réponde à nos besoins, elle déclare deux variables de référence temporaires inutiles startDate et endDate.

Une meilleure solution consiste à utiliser la déstructuration d'objets pour obtenir les paramètres d'entrée startDate et endDate sur une seule ligne.

// betterfunction getDaysRemaining(subscription) {  const { startDate, endDate } = subscription;  return startDate - endDate;
}复制代码
Copier après la connexion

On peut même utiliser la déstructuration d'objets pour définir ces deux variables directement dans les paramètres d'entrée.

// even betterfunction getDaysRemaining({ startDate, endDate }) {  return startDate - endDate;
}
Much more elegant wouldn’t you agree?复制代码
Copier après la connexion

Tu ne trouves pas que c'est plus élégant ?

Copier le tableau sans utiliser la syntaxe spread (...)

Utiliser for pour parcourir les éléments puis les copier dans un nouveau tableau est non seulement fastidieux mais aussi laid.

L'utilisation de la syntaxe d'expansion peut rendre l'implémentation plus claire et plus concise.

const stuff = [1,2,3];// badconst stuffCopyBad = []for(let i = 0; i < stuff.length; i++){
  stuffCopyBad[i] = stuff[i];
}// goodconst stuffCopyGood = [...stuff];复制代码
Copier après la connexion

Utilisez Var

Utilisez const pour garantir qu'une variable ne peut pas être réaffectée, ce qui peut réduire les bogues et améliorer la lisibilité du code.

// badvar x = "badX";var y = "baxY";// goodconst x = "goodX";const y = "goodX";复制代码
Copier après la connexion

Si vous avez vraiment besoin de réaffecter une variable, préférez toujours let plutôt que var . Si vous avez vraiment besoin de réaffecter une variable, utilisez let au lieu de var.

let fonctionne à la portée du bloc, tandis que var fonctionne à la portée de la fonction.

La portée du bloc rend la variable valide uniquement dans le bloc de code dans lequel elle est définie. L'accès à la variable en dehors de la portée du bloc entraînera une erreur ReferenceError.

for(let i = 0; i < 10; i++){  //something}
print(i) // ReferenceError: i is not defined复制代码
Copier après la connexion

Une variable définie dans la portée de la fonction peut être utilisée dans la portée de la fonction dans laquelle elle est définie. Les variables définies

for(var i = 0; i < 10; i++){  //something}console.log(i) // Outputs 10复制代码
Copier après la connexion

let et const sont accessibles dans la portée du bloc.

Ne pas utiliser de chaînes de modèles

L'épissage manuel de chaînes est très complexe à écrire et déroutant à lire. Voir exemple :

// badfunction printStartAndEndDate({ startDate, endDate }) {  console.log(&#39;StartDate:&#39; + startDate + &#39;,EndDate:&#39; + endDate)
}复制代码
Copier après la connexion

Les chaînes de modèle fournissent un moyen clair et lisible d'insérer des variables dans des chaînes.

// goodfunction printStartAndEndDate({ startDate, endDate }) {  console.log(`StartDate: ${startDate}, EndDate: ${endDate}`)
}复制代码
Copier après la connexion

La chaîne de modèle fournit un moyen simple d'envelopper des lignes. Il vous suffit d'appuyer sur la touche enter du clavier, comme vous l'utilisez habituellement (dans le système).

// prints on two linesfunction printStartAndEndDate({ startDate, endDate }) {  console.log(`StartDate: ${startDate}
  EndDate: ${endDate}`)
}复制代码
Copier après la connexion

Plus de recommandations d'apprentissage gratuites connexes : javascript(vidéo)

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!

Étiquettes associées:
source:juejin.im
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!