Maison >interface Web >js tutoriel >Comment puis-je accéder en toute sécurité aux propriétés des objets imbriqués en JavaScript et éviter les erreurs « Impossible de lire la propriété non définie » ?

Comment puis-je accéder en toute sécurité aux propriétés des objets imbriqués en JavaScript et éviter les erreurs « Impossible de lire la propriété non définie » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 07:37:09423parcourir

How Can I Safely Access Nested Object Properties in JavaScript and Avoid

Éviter les erreurs « Impossible de lire la propriété d'un élément non défini » dans les objets imbriqués

En JavaScript, travailler avec des objets imbriqués peut être difficile lorsque certains objets ont propriétés manquantes. Cela entraîne des erreurs d'exécution telles que "Impossible de lire la propriété d'undéfini" lorsque vous essayez d'accéder à des propriétés qui peuvent ne pas exister.

Une solution consiste à utiliser des instructions conditionnelles pour vérifier si une propriété existe avant d'y accéder. Cependant, cela peut devenir fastidieux pour les objets profondément imbriqués. Une approche alternative consiste à utiliser une fonction d'assistance avec try/catch.

function getSafe(fn, defaultVal) {
  try {
    return fn();
  } catch (e) {
    return defaultVal;
  }
}

Cette fonction prend deux paramètres :

  • fn : Une fonction qui récupère la valeur de la propriété.
  • defaultVal : Une valeur par défaut facultative à renvoyer si la propriété est undefined.

En utilisant cette fonction d'assistance, vous pouvez accéder aux propriétés imbriquées sans générer d'erreurs :

console.log(getSafe(() => obj.a.b.c)); // Logs "foo" or undefined if "c" doesn't exist

console.log(getSafe(() => obj.a.b.c, "Not found")); // Logs "Not found" if "c" doesn't exist

Chaînage facultatif (ES2020)

Si vous utilisez JavaScript selon ECMAScript 2020 ou version ultérieure, le chaînage facultatif est disponible en tant que méthode plus simple. solution :

console.log(obj?.a?.b?.c); // Logs "foo" or undefined if any property in the chain is undefined

Le chaînage facultatif vérifie chaque propriété de la chaîne et renvoie undefined si certaines ne sont pas définies, évitant ainsi les erreurs.

Dans la version TypeScript 3.7 ou ultérieure, le chaînage facultatif est également pris en charge, offrant un moyen pratique de gérer des objets imbriqués sans avoir besoin de fonctions d'assistance personnalisées ou de vérifications conditionnelles.

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