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()));
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 :
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!