Maison >interface Web >js tutoriel >Pourquoi certaines fonctions fléchées JavaScript renvoient-elles « non défini » ?

Pourquoi certaines fonctions fléchées JavaScript renvoient-elles « non défini » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 08:36:10395parcourir

Why Do Some JavaScript Arrow Functions Return `undefined`?

Fonctions fléchées et instructions de retour explicites

En JavaScript, les fonctions fléchées fournissent une syntaxe concise pour définir des fonctions. Cependant, un piège courant consiste à rencontrer des valeurs non définies lors de l'appel de fonctions fléchées qui utilisent des corps de bloc.

Considérez la fonction fléchée suivante :

const f = arg => { arg.toUpperCase(); };

Bien que cette fonction puisse paraître logique, elle renvoie un défini lorsque appelé. Pour comprendre pourquoi, nous devons examiner la sémantique des fonctions fléchées.

Lors de l'utilisation du corps de bloc (avec accolades) dans une fonction flèche, le comportement de retour implicite diffère du corps concis (sans accolades). Dans la version corps de bloc, la valeur renvoyée par la fonction doit être explicitement spécifiée à l'aide du mot-clé return.

const f = arg => { return arg.toUpperCase(); };

Avec cette instruction return explicite, la fonction renvoie correctement la valeur attendue : "TESTING".

Vous pouvez également utiliser la syntaxe du corps concis pour obtenir implicitement le même résultat :

const f = arg => arg.toUpperCase();

Dans ce cas, la dernière expression du corps, arg.toUpperCase(), est automatiquement renvoyé par la fonction flèche.

Par conséquent, pour éviter les valeurs non définies lors de l'appel de fonctions fléchées avec des corps de bloc, spécifiez toujours explicitement la valeur de retour à l'aide du mot-clé return ou utilisez la syntaxe de corps concise .

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