Maison > Article > interface Web > Pourquoi un saut de ligne après une instruction « return » provoque-t-il « undéfini » en JavaScript ?
Comprendre l'instruction Return en JavaScript : pourquoi les sauts de ligne peuvent être délicats
En JavaScript, l'instruction return est utilisée pour terminer l'exécution de une fonction et renvoie une valeur au contexte appelant. Cependant, un comportement particulier se produit lorsque la valeur de retour est placée sur une nouvelle ligne.
Le problème : les déclarations de retour brisées
Considérez l'extrait de code suivant :
<code class="javascript">function correct() { return 15; } function wrong() { return 15; } console.log("correct() called : " + correct()); console.log("wrong() called : " + wrong());</code>
Dans cet exemple, la fonction correct() renvoie la valeur attendue de 15, tandis que la fonction incorrect() renvoie undéfini. Ceci est surprenant car dans la plupart des autres langages, l'instruction return suivie d'une nouvelle ligne renverrait toujours la valeur correcte.
La raison : l'insertion automatique du point-virgule de JavaScript
La La clé pour comprendre ce comportement réside dans la fonctionnalité d'insertion automatique de point-virgule (ASI) de JavaScript. ASI est un mécanisme qui permet à JavaScript d'insérer automatiquement des points-virgules à certains caractères de nouvelle ligne pour garantir une exécution de code valide.
Lorsque l'instruction return dans false() est suivie d'une nouvelle ligne, ASI la traite comme une instruction distincte. En conséquence, le code est interprété comme :
<code class="javascript">function wrong() { return; 15; }</code>
Puisque la première instruction (return;) ne renvoie pas de valeur, la fonction incorrect() renvoie undéfini.
La solution : mettre la valeur de retour entre parenthèses
Pour garantir que la valeur de retour est correctement renvoyée même sur une nouvelle ligne, il est nécessaire de la mettre entre parenthèses. En faisant cela, ASI ne peut pas insérer de point-virgule et l'instruction return reste valide.
<code class="javascript">function wrong() { return( 15); }</code>
Dans ce cas, les parenthèses indiquent que la valeur de retour fait partie de l'instruction return. ASI n'insère pas de point-virgule et la fonction incorrect() renvoie désormais 15 comme prévu.
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!