Maison >interface Web >js tutoriel >Comment le chaînage facultatif et la fusion nulle simplifient-ils l'accès aux propriétés Null-Safe en JavaScript ?

Comment le chaînage facultatif et la fusion nulle simplifient-ils l'accès aux propriétés Null-Safe en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 11:39:11784parcourir

How Do Optional Chaining and Nullish Coalescing Simplify Null-Safe Property Access in JavaScript?

Accès aux propriétés NULL-Safe et affectation conditionnelle dans EcmaScript 6

EcmaScript 6 offre des opérateurs puissants pour rationaliser l'accès aux propriétés et l'affectation conditionnelle de manière concise et efficace.

Assignation conditionnelle

Dans les anciennes versions de JavaScript, la logique souhaitée pouvait être obtenue en utilisant un bloc try/catch :

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

let value = 3;
for (let x of [true, false]) {
  try { value = query(x).value; } catch {} // Don´t assign if no .value
}
console.log(value); // Outputs: 4

Chaînage facultatif

Maintenant, avec le chaînage facultatif, cette logique peut être considérablement simplifiée :

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

let value = 3;
for (let x of [true, false]) {
  value = query(x)?.value; // Assign only if `.value` exists
}
console.log(value); // Outputs: 4

Le ?. L'opérateur vérifie si query(x) est non nul et non défini, et accède ensuite seulement à la propriété value. Si query(x) est nulle ou indéfinie, elle renvoie indéfini sans générer d'erreur.

Coalescence nulle

Pour les valeurs nullables, l'opérateur de coalescence nulle (??) peut être utilisé :

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

let value = 3;
for (let x of [true, false]) {
  value ??= query(x).value; // Assign only if `value` is null or undefined
}
console.log(value); // Outputs: 4

Le ?? L'opérateur compare l'opérande de gauche à null ou indéfini, et si vrai, attribue l'opérande de droite. Dans ce cas, la valeur ne sera mise à jour que si elle était initialement nulle ou non définie.

Notez que ces opérateurs sont pris en charge dans les navigateurs modernes et peuvent être utilisés avec Babel pour une compatibilité entre navigateurs.

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