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