Je suis nouveau sur JavaScript, donc désolé pour la question amateur, mais je pense que la réponse aiderait à donner plus de sens au matériel de cours et aux devoirs dans mon cours en ligne. C'est ici. Quand j'écris console.log comme ceci:

var getKeys = function(objOne){
  for(var property in objOne){
    console.log(property);
  }
};

La console renvoie: "nom" "âge"

... mais si je change console.log en "return", comme ceci:

var getKeys = function(objOne){
  for(var property in objOne){
    return property;
  }
};

La sortie renvoie: "nom"

Pourquoi les retours sont-ils différents?

-2
Jeffrey Nixon 15 juil. 2015 à 04:12

5 réponses

Meilleure réponse

Selon la spec, (c'est moi qui souligne)

Une instruction return oblige une fonction à cesser son exécution et à renvoyer un valeur à l'appelant.

Votre boucle for...in n'atteindra donc jamais une 2e itération.

0
Oriol 15 juil. 2015 à 01:15

Une fois qu'une fonction atteint une instruction de retour, elle cessera de s'exécuter; donc dans le premier exemple, il boucle à travers les deux. Dans le second, il frappe cette déclaration de retour et dit: "D'accord, j'ai terminé."

0
Chad Hedgcock 15 juil. 2015 à 01:16

console.log() affichera sur la console vos arguments passés, où return arrêtera l'exécution de votre fonction et retournera tout ce que vous lui direz.

0
Richard Kho 15 juil. 2015 à 01:15

console.log et return sont des choses complètement différentes.

Pour le premier cas, vous voyez

"name"
"age"
> undefined 

Car vous dites à la console de consigner explicitement les clés, mais dans le deuxième cas, avec le mot clé return, vous dites à la fonction de se terminer et de renvoyer la valeur "name", c'est pourquoi vous ne voyez que

> "name"
0
Derek 朕會功夫 15 juil. 2015 à 01:15

Parce que return quitte la fonction. Vous quittez la fonction sur la première propriété, d'où la raison pour laquelle elle n'en est qu'une.

MDN return

L'instruction return termine l'exécution de la fonction et spécifie une valeur à renvoyer à l'appelant de la fonction.

1
epascarello 15 juil. 2015 à 01:15