JavaScript: Différence entre les deux .forEach() et .map()

Je sais qu'il y avait beaucoup de sujets de ce genre. Et je sais que les principes de base: .forEach() fonctionne sur le tableau d'origine et .map() sur le nouveau.

Dans mon cas:

function practice (i){
    return i+1;
};

var a = [ -1, 0, 1, 2, 3, 4, 5 ];
var b = [ 0 ];
var c = [ 0 ];
console.log(a);
b = a.forEach(practice);
console.log("=====");
console.log(a);
console.log(b);
c = a.map(practice);
console.log("=====");
console.log(a);
console.log(c);

Et c'est la sortie:

[ -1, 0, 1, 2, 3, 4, 5 ]
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
undefined
=====
[ -1, 0, 1, 2, 3, 4, 5 ]
[ 0, 1, 2, 3, 4, 5, 6 ]

Je ne comprends pas pourquoi à l'aide de practice changements de la valeur de b à undefined.

Je suis désolé si cette question idiote, mais je suis assez nouveau dans cette langue, et des réponses que j'ai trouvé jusqu'à présent ne me satisfont pas.

  • C'est simple: .map renvoie un nouveau tableau, alors que .forEach ne retourne rien. En gros, si vous voulez obtenir une forme modifiée du tableau précédent, vous utilisez .map, si vous ne voulez pas que, vous utilisez .forEach.
  • Double Possible de que fait le javascript forEach méthode (que la carte ne peut pas le faire)?
  • J'ai lu ce sujet avant d'en créer un nouveau, mais la réponse n'a pas satisfiy moi.
  • Ne pas dire qu'il ne vous satisfait pas. Comment exactement, n'est-ce pas répondre à votre question (avez-vous lu toutes les réponses?)? Qu'est-ce que votre question spécifique qui n'est pas couvert par le projet de double cible?
  • Cette question traite de l'auto-mise en œuvre des fonctions, et n'est pas vraiment à propos de la standardisation dans l'ES5 fonctions.
  • Voir l'article JavaScript — Carte vs ForEach

InformationsquelleAutor DzikiChrzan | 2015-12-22