Je reviens.
Cette leçon est donc totalement facultative.
C'est un peu un bonus.
C'est vraiment quelque chose qui est un peu intéressant.
C'est pourquoi je vous le montre, mais ce n'est pas essentiel au cours.
Et nous allons parler de la façon dont foreach fonctionne et nous allons construire notre propre version de pour chacun.
Donc, nous allons parler de la façon dont vous écrivez une fonction qui prend une fonction comme un argument, puis exécute cette fonction à l'intérieur de celui-ci.
Encore une fois complètement facultatif.
L'autre raison de le rendre facultatif, c'est que c'est un peu plus avancé et je ne veux pas intimider tout le monde je ne veux pas que vous vous sentiez mal si c'est si c'est déroutant pour vous parce qu'il est déroutant et souvent il faut plusieurs répétitions de cela.
Pour mes étudiants de l'obtenir.
Donc, c'est totalement facultatif.
Et c'est important, mais ce n'est pas essentiel pour faire des applications.
Il n'est pas indispensable d'avancer dans le cours.
C'est quelque chose cependant que si vous essayez de le regarder une fois maintenant et il ne fait pas une tonne de sens pour vous vous pourriez le revisiter vers la fin de la classe une fois que vous obtenez un peu plus d'expérience Javascript.
Et c'est quelque chose que j'ai à faire avec mes étudiants en personne tout le temps ainsi.
Comme je l'ai mentionné, nous revenons sur ce sujet.
Commençons donc, nous allons construire notre propre pour chacun et nous allons commencer par définir une fonction juste appelé pour chacun et il va fonctionner un peu différemment de la façon dont le vrai foreach fonctionne parce que maintenant la façon dont Pour chaque travail est que je définis un tableau que nous appelons Nom's et nous aurons quelques chiffres là-bas comme ça.
Et j'appelle pour chacun sur Nomes.
Donc nums point pour chacun et puis je lui donne une fonction et nous avons juste vu ce que je ne vais pas vous ennuyer trop espérons, mais nous allons simplement appeler ce nombre et puis juste faire un simple journal constant.
Non.
Voilà.
Il prend une fonction et il appelle une fonction sur chaque élément dans le tableau.
Knops, mais notez que nous n'avons pas eu à passer Nom's en pour chacun.
Il a juste su au sujet des nombres qu'il a su sur le tableau parce que nous avons fait le point de Gnome pour chacun.
Nous ne commencerons donc pas par définir une fonction qui fonctionne de cette façon.
Nous allons commencer par un exemple qui ressemble à cela.
Eh bien l'appeler mon pour chacun et plutôt que de prendre un seul argument, il faudra deux.
Et le premier est le tableau et le second est la fonction.
Donc array sera Nomes.
Et ce serait la fonction.
Donc, si vous vouliez exécuter le même code avec Nom's, ça ressemblerait à ceci pour chaque virgule de Nom et ensuite toute notre fonction ici qui ressemblera à celle sur le dessus.
Nous commençons donc par cette version parce que c'est plus simple.
C'est un peu plus de syntaxe, mais c'est plus simple pour nous d'écrire.
Encore une fois, nous passons dans Nom's plutôt que de le saisir en utilisant la magie javascript spéciale.
Il ya un moyen de saisir si vous définissez une méthode sur quelque chose comme nous avons ici, mais nous y arriverons.
OK alors nous allons définir une fonction MYF ou chacun.
Et il prend dans un tableau et une fonction.
Et nous ne pouvons pas appeler cette fonction parce que c'est un mot spécial en Javascript.
Donc nous allons appeler phunk ou F, si vous voulez l'appeler et alors nous allons ouvrir notre fonction.
Et commençons par parler de ce que pour chacun fait réellement.
Rappelez-vous donc qu'il prend cette fonction et il appelle pour chaque élément dans le tableau.
Donc, pour ce faire, nous devons utiliser une boucle pour faire quelque chose pour chaque élément d'un tableau.
Nous devons avoir une boucle.
Donc, nous allons juste utiliser une boucle for sera en boucle à travers le tableau et puis dans la boucle que nous allons appeler la fonction et tout ce que nous devons faire pour appeler la fonction est d'ajouter des parenthèses à la fin.
Donc, c'est un peu confus c'est ce que mes élèves ont toujours de la difficulté avec et n'importe qui qui apprend javascript est accroché ici.
Mais rappelez-vous la distinction entre le nom d'une fonction sans parenthèses.
Il s'agit simplement de la fonction elle-même.
Mais il ne l'exécute pas dès que j'ajoute les parenthèses qu'il prend ce code au lieu de func et l'exécute.
Donc je peux vous donner un exemple ici.
Si nous faisons juste.
Permettez-moi de couper cela.
Si nous juste pour alerter l'alerte ne fonctionne pas réellement.
Mais dès que nous ajoutons ces parenthèses, nous obtenons une alerte.
Et je n'ai pas passer quoi que ce soit dans mais il est toujours exécuté le code.
Revenons donc à notre code et plutôt que de simplement appeler phunk tout de suite comme ça, nous ferons une boucle dans le tableau.
J'ajoute donc une boucle de commentaire à travers le tableau, puis à l'intérieur de la boucle appel phunk pour chaque élément du tableau.
Donc, faire une boucle à travers le tableau.
Eh bien c'est une boucle for.
Vous pouvez également utiliser une boucle while mais nous utiliserons une boucle for.
Donc, pour var I, égal à zéro I, inférieur à une longueur de point r r qui est le nom de l'argument.
A R R.
Et puis je plus plus juste comme ça et puis je vais déplacer cette ligne dans notre boucle parce que ce que nous voulons faire est à l'intérieur de cette boucle, nous voulons appeler phunk afin que nous puissions commencer en appelant les gens juste comme ça.
Donc, quelle que soit la fonction est passée comme le deuxième argument va être appelé une fois pour chaque élément dans le tableau, nous sommes toujours en manque un élément important qui est de passer réellement les données de chaque élément dans le tableau dans.
Mais cette colonne entière pour chaque article.
Alors, allons entrer.
Et maintenant, essayons d'exécuter ce.
Je vais définir un tableau appelé couleurs ou favori mon préféré au moins orange.
Et nous nous arrêterons au jaune.
Donc, trois éléments et puis je vais juste appeler mon quatre chacun et passer dans les couleurs que le tableau et puis je vais faire l'alerte.
Et nous n'ajoutons pas de parenthèses, car cela va immédiatement exécuter l'alerte.
Ce n'est pas ce que nous voulons.
Nous voulons que la fonction my pour chacun soit celle d'exécuter l'alerte.
Rappelez-vous donc que phunk est réellement alerte.
Dans ce cas, mais il peut également être consul que log ou le plus souvent il serait une fonction anonyme.
Nous définissons cela serait appelé l'intérieur de phunk.
Donc, nous allons le changer de nouveau à l'alerte et ne frappe entrer.
Je reçois une alerte.
J'ai touché OK, j'obtiens une autre alerte.
Je clique sur OK et j'obtiens une autre alerte.
Donc, ce qui se passe est que cette boucle est en boucle sur le tableau qui dans notre cas est un tableau de couleurs avec trois éléments.
Donc trois fois il boucle et chaque fois qu'il appelle func et tout ce que phunk est est alerte.
C'est tout ce qu'il est.
Donc, il alerte une alerte vide trois fois parce que nous ne transmettons rien en funk.
Donc, pour faire fonctionner les données passées en alerte ou tout ce que func est tout ce que nous faisons est de passer un peu de données ici et que peu de données est censé être chaque élément dans le tableau.
Ainsi, la façon dont nous accédons à chaque élément est en utilisant I.
Donc, si je me souviens du code ici, je viens d'ajouter tableau parenthèse.
Donc la première fois dans la boucle cela appellera func qui est alerte.
Dans ce cas avec le premier élément dans le tableau qui est lu ainsi obtiendrez l'alerte lu et puis je deviens un.
Donc, rappelez-vous phunk qui est toujours alerte avec un tableau qui est orange.
Donc nous obtenons orange alerte et puis une alerte de plus de temps jaune dire alors voir que maintenant si je me souviens de mon exécution ici mon pour chaque alerte de couleurs.
Maintenant, il me donne rouge orange et jaune et c'est en fait tout ce qu'il ya à définir pour chacun.
Toutefois, comme je l'ai dit la plupart du temps, vous ne verrez pas comme ça, où nous passons une fonction nommée aura généralement une fonction anonyme.
Donc ne pas lui donner un coup de feu.
Mais en utilisant une fonction anonyme.
Donc, mon pour chacun et puis nous passerons et les couleurs à nouveau, puis une fonction anonyme.
Et rappelez-vous que même s'il y a des parenthèses ici, ce sont des parenthèses très différentes de celles que l'on dit invoquer une fonction.
Alors laissez-moi vous montrer ce que je veux dire.
Si je supprime cette première partie et j'ai juste une fonction anonyme ici.
Et tout ce que nous faisons à l'intérieur est dialogue de conseil.
Je suis une fonction et j'ai frappé Enter dès maintenant et je peux spaceless un peu pour vous donc c'est un peu plus facile de voir ce qui se passe.
Que croyez vous qu'il va se passer.
Bien sûr que c'est arrivé.
Permettez-moi de revenir en arrière et d'ajouter dans les parenthèses de clôture pour mon avocat log de point.
Maintenant, que pensez-vous que va se passer.
Je suppose que c'est un peu le moment ici.
Mais comme j'ai frappé Enter, vous verrez que rien ne se passe vraiment.
Je reçois une valeur qui m'a retourné une valeur qui a renvoyé.
Mais le code n'est pas exécuté Je ne vois pas de perspectives constantes et c'est parce que cette fonction anonyme n'a jamais été invoquée.
Fondamentalement il a existé pendant un moment et maintenant il est allé.
Je ne lui ai pas donné un nom.
Je ne l'ai pas enregistré à une variable.
Je ne pourrai jamais l'appeler à moins de le réécrire.
Donc, pour exécuter cette fonction, j'ai encore besoin de ces parenthèses après.
Donc, c'est beaucoup de syntaxe c'est un peu laid à mon avis.
Mais maintenant, si j'ai eu ces parenthèses, j'obtiens la fonction.
Donc, c'est la même chose quand nous faisons ceci pour chaque couleur et ensuite nous passons une fonction anonyme ici.
Et disons que cette fonction fait quoi que ce soit, disons simplement des alertes, cette fonction n'est pas invoquée ici.
C'est la fonction ici.
Nous avons encore besoin de ces parenthèses comme nous l'avons ici.
Et cela vient de l'intérieur de mon foreach où nous ajoutons ces parenthèses sur funk et funk.
Dans notre cas ici, c'est tout le second argument.
Donc, si vous êtes un peu perdu dans ce ne vous inquiétez pas encore n'est pas crucial pour le reste du cours.
Mais essayez ceci encore plus tard à la fin ainsi je peux faire quelque chose comme ceci où je juste alerte haut ou je ne suis pas réellement en utilisant les données comme orange rouge et jaune.
Ce n'est pas si commun de vouloir le faire, mais si je touche entrer.
Vous verrez que je reçois un haut deux et trois sommets.
Donc, pour chaque élément dans le tableau de cette couleur il ya trois éléments.
Il appelle cette fonction entière, mais le plus souvent ce que nous voulions faire est effectivement utiliser cette couleur comme nous le faisons ici.
Ou nous pouvons commencer comme chaque couleur.
Donc, tout ce que nous avons à faire est d'accepter un argument dans notre fonction.
Donc, mon foreach et qui est espacé cela un peu.
Donc, la fonction et ce sera appelé couleur, mais qui peut être quelque chose, bien sûr, comme n'importe quelle autre fonction que nous définissons.
Il peut être presque tout ce qu'il doit être un nom valide javascript, il ne peut pas être quelque chose comme fonction ou var qui sont réservés à leurs mots-clés, mais tout le reste va fonctionner.
Voilà ce que nous avons ici.
Une fonction anonyme qui attend maintenant un argument et ensuite nous pouvons l'utiliser à l'intérieur d'ici.
Donc, la console log log point de commencer.
Donc, pour marcher à travers cette une fois de plus, nous bouclons les couleurs.
Dans ce cas, c'est ce que notre tableau est un sont sont nous boucle à travers que chaque fois que nous appelons phunk qui est tout ce chose ici.
Je rappelle cela en passant dans l'article actuel de ce tableau.
Nous appelons ce code ici.
Et puis nous passons en rouge, puis orange et jaune.
Donc la couleur est égale à rouge ou orange ou jaune.
Chaque fois que vous voyez cette liste, nous obtenons rouge orange et jaune.
C'est donc la façon fondamentale d'écrire pour chacun.
Mais comme une promesse, je voudrais aussi vous montrer comment nous sommes ajoutés à un tableau afin que nous puissions l'écrire comme ce point de couleur pour chaque ou dot mon pour chaque, car il ya déjà pour chacun là.
Nous allons le laisser tranquille.
Mais la couleur de mon pour chacun.
Et puis nous pouvons passer dans une fonction ici pour le faire.
Et quand un saut un peu en avant de moi-même nous n'avons pas parlé d'objets mais nous n'avons pas parlé de prototypes mais je vais juste vous le montrer ici et puis nous en apprendrons plus à ce sujet que le cours va sur.
En fait l'unité suivante est tout au sujet des objets.
Donc, ce que nous faisons, c'est que nous ajoutons réellement une méthode à un type de produit re dot prototype que vous ne l'épeler jamais et nous allons appeler mon pour chacun.
Et avant que je ne remarque l'autocomplétion.
Ce sont toutes les méthodes qui existent sur le prototype de réseau.
Donc c'est là que nous obtenons toutes ces méthodes comme push et pop et shift et unshipped et pour chaque qui existent sur chaque tableau unique qu'ils sont définis sur ce que l'on appelle le prototype de tableau et tout ce qui est défini sur ce prototype est disponible, il est utilisable dans chaque tableau unique .
Alors essayons ceci maintenant lisez up prototyped up my for each est une fonction et la fonction ne prend qu'un argument.
Maintenant, comme nous l'avons ici, il suffit de prendre func et puis à l'intérieur, nous avons besoin de faire notre même logique où nous boucle à travers le tableau et puis appeler une fonction pour chaque élément dans le tableau.
La seule chose qui change, c'est qu'on n'accepte pas un argument.
A R sont nous n'avons pas le tableau plus, mais nous l'avons ici.
C'est un peu différent.
Nous devons utiliser le mot-clé ceci.
Donc, le mot clé que cela va se référer au tableau particulier que nous appelons Assan.
Donc, dans le cas de points de couleurs pour chacun si nous avons écrit le mot-clé à l'intérieur de la pour chaque définition, il se réfère à des couleurs.
Mais si nous faisions des chiffres pour chacun d'eux ou des chiens pour chacun.
Il s'agit du tableau spécifique sur lequel nous l'appelons.
Donc, nous allons faire un quatre VAR I égal à zéro.
Alors que je suis moins que ce point comme je plus plus.
C'est donc le premier changement.
Nous avons utilisé ce lien qui fait référence au tableau spécifique.
Donc nous ne le transmettons plus.
La prochaine chose que nous faisons est que nous appelons phunk juste comme nous l'avons fait dans la version d'origine, sauf au lieu de support de tableau je ferais cette parenthèse.
J'aime ça.
Et c'est tout ce qu'il y a à faire.
Donc, nous avons juste adapté un peu en remplaçant un r r qui a le nom de notre argument.
Et il aurait pu être quelque chose, bien sûr, en le remplaçant par le mot clé cela.
Alors essayons-le pour l'utiliser.
Nous devons faire un nouveau tableau.
Donc, je vais faire un appelés amis et nous aurons quelques amis.
Charlie.
Dave Matie et Caitlin juste comme ce coup entrent.
Maintenant, nous pouvons faire des amis dot my pour chacun et qui prend une seule fonction comme un argument.
Donc, nous pourrions simplement le mettre en garde si nous le voulons.
Et nous avons Charlie.
Dave Madie et Caitlin mais nous le verrions typiquement avec une fonction anonyme comme ceci mon pour chacun et puis une fonction ici et disons chacun d'eux est un nom.
Et puis ce que nous ferions, c'est à nous, mais nous allons faire quelque chose comme counsil que log I love plus nom.
Là nous allons et nous obtenons.
J'aime Charlie J'aime Dave.
J'adore Maddy J'adore Caitlin.
OK, c'est tout ce qu'il y a à faire.
Et je ne veux pas dire que d'une manière frivole, il ya beaucoup à elle, mais en ce qui concerne le code, il est effectivement assez courte juste quelques nouveaux concepts.
Ce prototype que je n'ai pas vraiment passé et je l'ai fait exprès.
Ce n'est pas important maintenant de se concentrer sur cela, mais je veux que vous vous concentriez sur cette idée de passer une fonction autour afin que nous puissions passer une fonction à un argument ou comme un argument et il ne sera pas exécuté Intel Inside the Code nous nous référons à lui et ajouter ces parenthèses à la fin.
Donc, sans ces parenthèses, la fonction ne fait rien.
Ça existe.
C'est une valeur que nous pouvons faire référence, mais nous ajoutons les parenthèses et il est effectivement exécuté.
Très bien.