Qu'est-ce que la fonction “*” en JavaScript?
Dans cette page, j'ai trouvé une nouvelle fonction JavaScript type:
//NOTE: "function*" is not supported yet in Firefox.
//Remove the asterisk in order for this code to work in Firefox 13
function* fibonacci() { //!!! this is the interesting line !!!
let [prev, curr] = [0, 1];
for (;;) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
Je sais déjà ce que rendement
, let
et [?,?]=[?,?]
ne, mais n'ont aucune idée de ce que le function*
est censé être. Quel est-il?
P. S. n'est pas la peine d'essayer Google, c'est impossible pour rechercher des expressions avec des astérisques (ils sont utilisés comme des espaces réservés).
Le commentaire de l'exemple est assez vieux maintenant,
Quant à Google, il suffit de chercher pour fonction de "star" ou la fonction "astérisque". Voilà comment j'ai trouvé cette question ;).
Ressemble à la
Un autre MDN lien (qui, par ailleurs, j'ai trouvé sur le MDN page liée par l'OP): developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Un autre utile MDN lien: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...*
function*
en charge la syntaxe dans Firefox depuis v26: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...* . Les anciennes versions utilisé une syntaxe différente.Quant à Google, il suffit de chercher pour fonction de "star" ou la fonction "astérisque". Voilà comment j'ai trouvé cette question ;).
Ressemble à la
*
a été retirée le lien de @Nickolay. Voici un lien directement à function*
au MDN. Bien sûr, "de base" de soutien depuis v26.Un autre MDN lien (qui, par ailleurs, j'ai trouvé sur le MDN page liée par l'OP): developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
Un autre utile MDN lien: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...*
OriginalL'auteur string QNA | 2012-03-08
Vous devez vous connecter pour publier un commentaire.
C'est un Générateur fonction.
Note historique:
C'est un projet de syntaxe pour
EcmaScript.next
.Dave Herman de Mozilla donné une conférence sur EcmaScript.prochaine. Au 30:15 il parle de générateurs.
Plus tôt, il explique comment Mozilla est expérimentalement la mise en œuvre des changements de langue pour aider à diriger le comité. Dave travaille en étroite collaboration avec Brendan Eich, CTO de Mozilla (je crois), et l'original JavaScript designer.
Vous pouvez trouver plus de détails sur l'EcmaScript wiki du groupe de travail: http://wiki.ecmascript.org/doku.php?id=harmony:generators
Le groupe de travail (TC-39) a un accord général pour EcmaScript.la prochaine devrait avoir une sorte de générateur de itérateur proposition, mais ce n'est pas définitive.
Vous ne devriez pas compter sur cette montrant sans changements dans la prochaine version de la langue, et même si elle ne change pas, il ne sera probablement pas largement dans les autres navigateurs, pour un temps.
for(;;)
)? Pourquoi l'utiliser dans ce contexte?est le même que
while (true)
. Il est utilisé dans ce contexte puisque la suite de Fibonacci est une surabondance de la séquence.État de la technique: C# rendement?
avant l'état de la technique: Python rendement. Avant avant avant d'art: CLU et de l'Icône.
OriginalL'auteur Mike Samuel
C'est un générateur de fonction - et il l'a dit dans la page que vous citez, dans le commentaire que vous avez remplacé par "c'est intéressant"...
En gros, c'est un moyen pour spécifier les séquences par programme afin qu'ils puissent être passés et les éléments accessibles par un index sans avoir à calculer la totalité de la séquence (éventuellement infini en taille) à l'avance.
OriginalL'auteur Michael Borgwardt
La
function*
type ressemble, il agit comme un générateur de fonction pour le processus peut être itéré.C# est une fonctionnalité de ce genre à l'aide de "taux de retour" voir 1 et voir les 2
Essentiellement, cela renvoie à chaque valeur, un par un, pour ce qui est de l'itération de cette fonction, qui est pourquoi leurs cas d'utilisation montre dans un foreach style de boucle.
OriginalL'auteur invalidsyntax