# Chaînage optionnel

> Syntaxe JavaScript notée « ?. » qui arrête l'accès à une propriété imbriquée et renvoie « undefined » dès qu'un maillon de la chaîne est absent, au lieu de déclencher une erreur.

- Auteur : Clément Hadrot
- Publié le : 2026-09-25
- Mis à jour le : 2026-09-25
- URL : https://wpmoderne.dev.wordpress-developpement.fr/lexique/chainage-optionnel/

Accéder à `reponse.data.utilisateur.nom` échoue brutalement avec une erreur si `data` ou `utilisateur` est absent à un moment donné, un cas fréquent avec des données d'API dont la forme varie selon le contexte. Le chaînage optionnel, écrit `?.`, résout ce problème : dès qu'un maillon de la chaîne vaut `null` ou `undefined`, l'expression entière s'arrête et renvoie `undefined`, sans lever d'exception.

## Un cas fréquent avec l'API REST de WordPress

Les réponses de l'API REST de WordPress contiennent des structures imbriquées qui ne sont pas toujours présentes selon le contexte (un article sans image mise en avant, un champ personnalisé absent). Le chaînage optionnel évite d'écrire une série de vérifications manuelles avant chaque accès, en particulier dans le JavaScript d'un bloc personnalisé qui consomme ces données via `apiFetch`.

## Exemple

```
const url = article?.featured_media_details?.sizes?.large?.source_url;
// undefined si l'image mise en avant n'existe pas, sans erreur
```

## À ne pas confondre avec

- L'opérateur de coalescence des nuls (`??`), souvent utilisé juste après pour fournir une valeur par défaut : `article?.titre ?? 'Sans titre'`.
- Une vérification d'existence classique avec `if` : le chaînage optionnel ne remplace pas toute logique conditionnelle, il sécurise seulement l'accès à une propriété potentiellement absente.
- Un appel de fonction incertain, qui utilise une variante dédiée : `objet.methode?.()` vérifie que `methode` existe avant de l'appeler, avec la même logique que pour une propriété.
- Un accès à un index de tableau potentiellement absent, qui se sécurise de la même façon : `tableau?.[0]` plutôt que `tableau[0]`, utile quand le tableau lui-même peut être `undefined`.
