Maison > interface Web > js tutoriel > Pourquoi les fonctions JavaScript renvoient-elles « undéfini » lorsque l'instruction Return est interrompue ?

Pourquoi les fonctions JavaScript renvoient-elles « undéfini » lorsque l'instruction Return est interrompue ?

Mary-Kate Olsen
Libérer: 2024-10-24 08:55:30
original
663 Les gens l'ont consulté

Why Do JavaScript Functions Return

Les fonctions JavaScript renvoient « undéfini » lorsque l'instruction de retour est interrompue.

Dans certains scénarios, les fonctions JavaScript peuvent ne pas renvoyer les objets attendus en raison aux sauts de ligne après l'instruction return. Ce problème survient lorsque la définition de l'objet est séparée de l'instruction return par un saut de ligne, comme le montre l'exemple de code :

function foo1(){
    return {msg: "hello1"};
}
function foo2(){
    return
    {msg: "hello2"};
}

// output = "foo1 =  {"msg":"hello1"}"
console.log('foo1 = ' , JSON.stringify(foo1())); 

//output = " foo2 =  undefined "
console.log('foo2 = ' , JSON.stringify(foo2()));
Copier après la connexion

La principale différence entre ces fonctions est le saut de ligne entre l'instruction return et l'instruction return. définition de l'objet dans foo2. Le mécanisme d'insertion automatique de point-virgule (ASI) de JavaScript insère faussement un point-virgule après l'instruction return dans foo2, mettant ainsi fin à l'exécution de la fonction sans renvoyer d'objet. Cela conduit à la sortie de « undéfini » lors de la chaîne foo2().

Pour éviter ce problème, plusieurs approches peuvent être adoptées :

  • Points-virgules explicites : Ajoutez un point-virgule après l'instruction return pour empêcher ASI d'insérer un point-virgule involontaire.
  • Parenthèses (opérateur de regroupement) : Enveloppez l'instruction return et la définition de l'objet entre parenthèses pour forcer JavaScript à interpréter l'objet dans le cadre de l'expression de retour.
  • Placer l'objet sur la même ligne : Évitez les sauts de ligne entre l'instruction de retour et la définition de l'objet pour empêcher l'ASI d'interférer.

Dans les cas où les considérations esthétiques ou la lisibilité du code l'emportent sur les problèmes potentiels d'ASI, les développeurs peuvent choisir de regrouper les expressions à l'aide de l'opérateur de regroupement, comme le montre l'exemple fourni dans la réponse. Cependant, cette approche est avant tout une question de préférence et n'affecte pas la fonctionnalité du code.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal