Maison > interface Web > js tutoriel > Comment le chaînage facultatif et la fusion nulle améliorent-ils les affectations conditionnelles en JavaScript ?

Comment le chaînage facultatif et la fusion nulle améliorent-ils les affectations conditionnelles en JavaScript ?

Susan Sarandon
Libérer: 2024-12-21 01:27:10
original
843 Les gens l'ont consulté

How Do Optional Chaining and Nullish Coalescing Improve Conditional Assignments in JavaScript?

Chaînage facultatif et affectation conditionnelle dans EcmaScript 6

Dans le but de simplifier les affectations conditionnelles et l'accès aux propriétés null-safe, EcmaScript 6 introduit plusieurs opérateurs pour améliorer l'efficacité et la lisibilité du code.

Chaînage facultatif (ECMAScript 2020)

Chaînage optionnel, représenté par le ?. opérateur, permet le parcours sécurisé des propriétés nullables. Dans votre exemple, vous pouvez simplifier la ligne 4 à l'aide d'un chaînage facultatif :

const query = succeed => (succeed ? { value: 4 } : undefined);

let value = 3;
for (let x of [true, false]) {
  value = query(x)?.value;
}
// Output: 4
Copier après la connexion

Assignation de fusion nulle (ECMAScript 2021)

Pour les affectations conditionnelles, l'opérateur d'affectation de fusion nulle ??= peut être utilisé. Il attribue la valeur à l'opérande de gauche uniquement si cet opérande est évalué comme nul ou indéfini. Cela évite le besoin de blocs try-catch ou de vérifications nulles explicites :

query(x)?.value ??= value;
Copier après la connexion

Considérations et alternatives

  • Compatibilité cible : Le chaînage facultatif et l'affectation de fusion nulle sont pris en charge dans les navigateurs modernes et EcmaScript 2020 et 2021, respectivement. Utilisez « Puis-je utiliser » (https://caniuse.com/) pour vérifier la compatibilité pour des environnements spécifiques.
  • Plugin Babel : Pour les environnements plus anciens, un plugin Babel peut être utilisé pour transpiler ces opérateurs dans une syntaxe compatible.
  • Alternative CoffeeScript : L'idiome CoffeeScript query(x).value if requête(x)?.valeur? obtient un comportement similaire mais implique une répétition.
  • Accès à la propriété d'objet : Dans les cas où vous définissez une propriété d'objet, l'opérateur ??= garantit que l'affectation ne se produit que si la propriété n'est pas déjà attribuée. . Cela évite les appels de setter inutiles.
  • Abstraction de fonction : L'abstraction de la logique dans une fonction n'est pas possible car l'affectation conditionnelle ne peut pas être exprimée uniquement dans des appels de fonction.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal