Maison >interface Web >js tutoriel >Le placement des accolades est-il important dans les retours de fonctions JavaScript ?

Le placement des accolades est-il important dans les retours de fonctions JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 21:03:29792parcourir

Does Curly Brace Placement Matter in JavaScript Function Returns?

Impact du placement des accolades sur les résultats des fonctions JavaScript

En JavaScript, le placement des accolades dans les fonctions peut affecter de manière significative le comportement du code. Considérez les deux exemples suivants :

<code class="javascript">function test()
{
  return
  {
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript);
} catch (e) {
  alert('no - it broke: ' + typeof r);
}</code>

Dans ce cas, la fonction test() renvoie undéfini et un message d'alerte « non - c'est cassé : undéfini » s'affiche. Cependant, si l'accolade est placée sur la même ligne que return, comme indiqué ci-dessous :

<code class="javascript">function test()
{
  return {
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript);
} catch (e) {
  alert('no - it broke: ' + typeof r);
}</code>

La fonction test() renverra un objet et le message d'alerte affichera "fantastique".

Cette différence provient de l'insertion automatique d'un point-virgule par JavaScript. Lorsqu'une ligne ne se termine pas par un point-virgule, mais pourrait potentiellement marquer la fin d'une instruction, JavaScript en insère automatiquement un. Par conséquent, le premier extrait de code est effectivement interprété comme :

<code class="javascript">function test()
{
  return; // inserted semicolon
  {
    javascript: "fantastic"
  };
}</code>

Le point-virgule après le retour ; termine l'instruction return, ce qui fait que le bloc d'accolade devient un code inaccessible. Ainsi, test() renvoie undefined.

En revanche, le deuxième exemple ne déclenche pas l'insertion automatique de point-virgule, ce qui donne une valeur de retour d'objet valide. Ceci est équivalent au code suivant :

<code class="javascript">function test() {
    var myObject = new Object();
    myObject.javascript = "fantastic";
    return myObject;
}</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!

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