Je sais que l' >=
opérateur signifie plus ou égal à, mais j'ai vu =>
dans du code source. Quelle est la signification de cet opérateur?
Voici le code:
promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
if (!aDialogAccepted)
return;
saveAsType = fpParams.saveAsType;
file = fpParams.file;
continueSave();
}).then(null, Components.utils.reportError);
javascript
syntax
ecmascript-6
arrow-functions
rpgs_player
la source
la source
Réponses:
Ce que c'est
Il s'agit d'une fonction de flèche. Les fonctions fléchées sont une syntaxe courte, introduite par ECMAscript 6, qui peut être utilisée de la même manière que vous utiliseriez des expressions de fonction. En d'autres termes, vous pouvez souvent les utiliser à la place d'expressions comme
function (foo) {...}
. Mais ils ont des différences importantes. Par exemple, ils ne lient pas leurs propres valeurs dethis
(voir ci-dessous pour la discussion).Les fonctions fléchées font partie de la spécification ECMAscript 6. Ils ne sont pas encore pris en charge dans tous les navigateurs, mais ils sont partiellement ou entièrement pris en charge dans Node v. 4.0+ et dans la plupart des navigateurs modernes utilisés à partir de 2018 (j'ai inclus une liste partielle des navigateurs pris en charge ci-dessous).
Vous pouvez en lire plus dans la documentation de Mozilla sur les fonctions fléchées .
De la documentation Mozilla:
Remarque sur le
this
fonctionnement des fonctions fléchéesL'une des fonctionnalités les plus pratiques d'une fonction de flèche est enterrée dans le texte ci-dessus:
En termes plus simples, cela signifie que la fonction flèche conserve la
this
valeur de son contexte et n'a pas la siennethis
. Une fonction traditionnelle peut lier sa proprethis
valeur, selon la façon dont elle est définie et appelée. Cela peut nécessiter beaucoup de gymnastique commeself = this;
, etc., pour accéder ou manipulerthis
d'une fonction à l'intérieur d'une autre fonction. Pour plus d'informations sur ce sujet, consultez les explications et les exemples dans la documentation de Mozilla .Exemple de code
Exemple (également dans les documents):
Remarques sur la compatibilité
Vous pouvez utiliser les fonctions fléchées dans Node, mais la prise en charge du navigateur est inégale.
La prise en charge par le navigateur de cette fonctionnalité s'est beaucoup améliorée, mais elle n'est pas encore assez répandue pour la plupart des utilisations basées sur le navigateur. Depuis le 12 décembre 2017, il est pris en charge dans les versions actuelles de:
Non pris en charge dans:
Vous pouvez trouver plus d'informations (et plus à jour) sur CanIUse.com (sans affiliation).
la source
C'est ce qu'on appelle une fonction de flèche, qui fait partie de la spécification ECMAScript 2015 ...
Syntaxe plus courte que la précédente:
DEMO
L'autre chose géniale est lexicale
this
... Habituellement, vous feriez quelque chose comme:Mais cela pourrait être réécrit avec la flèche comme ceci:
DEMO
MDN
Plus d'informations sur la syntaxe
Pour en savoir plus, voici une assez bonne réponse pour savoir quand utiliser les fonctions fléchées.
la source
Ce serait "l'expression de la fonction flèche" introduite dans ECMAScript 6.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
À des fins historiques (si la page wiki change plus tard), c'est:
la source
Ce sont des fonctions fléchées
Aussi connu sous le nom de Fat Arrow Functions . Ils sont un moyen propre et simple d'écrire des expressions de fonction, par exemple
function() {}
.Les fonctions fléchées peuvent supprimer le besoin de
function
,return
et{}
lors de la définition des fonctions. Ce sont des lignes simples, similaires aux expressions Lambda en Java ou en Python.Exemple sans paramètres
Si plusieurs instructions doivent être faites dans la même fonction de flèche, vous devez encapsuler, dans cet exemple,
queue[0]
entre crochets{}
. Dans ce cas, la déclaration de retour ne peut pas être omise.Exemple avec 1 paramètre
Vous pouvez omettre
{}
de ce qui précède.Lorsqu'il n'y a qu'un seul paramètre, les crochets
()
autour du paramètre peuvent être omis.Exemple avec plusieurs paramètres
Un exemple utile
Si nous voulions obtenir le prix de chaque fruit dans une seule gamme, dans ES5, nous pouvions faire:
Dans ES6 avec les nouvelles fonctions fléchées, nous pouvons rendre cela plus concis:
Des informations supplémentaires sur les fonctions fléchées sont disponibles ici .
Compatibilité du navigateur
Des informations supplémentaires à jour peuvent être trouvées sur la compatibilité du navigateur ici
la source
juste pour ajouter un autre exemple de ce qu'un lambda peut faire sans utiliser map:
la source
Comme d'autres l'ont dit, c'est une nouvelle syntaxe pour créer des fonctions.
Cependant, ce type de fonctions diffère des fonctions normales:
Ils lient la
this
valeur. Comme expliqué par la spécification ,Ce sont des non constructeurs.
Cela signifie qu'ils n'ont pas de méthode interne [[Construct]] et ne peuvent donc pas être instanciés, par exemple
la source
Je l' ai lu, c'est un symbole de
Arrow Functions
dansES6
cette
en utilisant
Arrow Function
peut être écrit commeDocuments MDN
la source
Ajout d'un exemple CRUD simple avec Arrowfunction
la source
Insatisfait des autres réponses. La réponse la plus votée en date du 2019/3/13 est en fait fausse.
La version abrégée de ce qui
=>
signifie est un raccourci pour écrire une fonction ET pour la lier au courantthis
Est effectivement un raccourci pour
Vous pouvez voir toutes les choses qui se sont raccourcies. Nous n'avions pas besoin
function
, nireturn
ni.bind(this)
ni ni même d'accolades ou de parenthèsesUn exemple légèrement plus long de fonction de flèche peut être
Montrer que si nous voulons plusieurs arguments pour la fonction, nous avons besoin de parenthèses et si nous voulons écrire plus d'une seule expression, nous avons besoin d'accolades et d'un explicite
return
.Il est important de comprendre la
.bind
partie et c'est un gros sujet. Cela a à voir avec ce quethis
signifie en JavaScript.TOUTES les fonctions ont un paramètre implicite appelé
this
. La façon dontthis
est définie lors de l'appel d'une fonction dépend de la façon dont cette fonction est appelée.Prendre
Si vous l'appelez normalement
this
sera l'objet global.Si vous êtes en mode strict
Ce sera
undefined
Vous pouvez définir
this
directement en utilisantcall
ouapply
Vous pouvez également définir
this
implicitement à l'aide de l'opérateur point.
Un problème survient lorsque vous souhaitez utiliser une fonction comme rappel ou écouteur. Vous créez une classe et souhaitez affecter une fonction comme rappel qui accède à une instance de la classe.
Le code ci-dessus ne fonctionnera pas car lorsque l'élément déclenche l'événement et appelle la fonction, la
this
valeur ne sera pas l'instance de la classe.Une façon courante de résoudre ce problème consiste à utiliser
.bind
Parce que la syntaxe des flèches fait la même chose que nous pouvons écrire
bind
fait effectivement une nouvelle fonction . Si celabind
n'existait pas, vous pourriez en fait créer le vôtre comme ceciDans les anciens JavaScript sans l'opérateur de propagation, il serait
La compréhension de ce code nécessite une compréhension des fermetures mais la version courte est
bind
une nouvelle fonction qui appelle toujours la fonction d'origine avec lathis
valeur qui lui était liée. fonction de flèche fait la même chose car ils sont un raccourci pourbind(this)
la source
Comme toutes les autres réponses l'ont déjà dit, cela fait partie de la syntaxe de la fonction de flèche ES2015. Plus précisément, ce n'est pas un opérateur, il est un ponctueur jeton qui sépare les paramètres du corps:
ArrowFunction : ArrowParameters => ConciseBody
. Par exemple(params) => { /* body */ }
.la source
ES6
Fonctions fléchées:En javascript, le
=>
est le symbole d'une expression de fonction de flèche. Une expression de fonction flèche n'a pas sa proprethis
liaison et ne peut donc pas être utilisée comme fonction constructeur. par exemple:Règles d'utilisation des fonctions fléchées:
{}
l'return
instruction etPar exemple:
la source
Les fonctions fléchées désignées par le symbole (=>) vous aident à créer des fonctions et des méthodes anonymes. Cela conduit à une syntaxe plus courte. Par exemple, ci-dessous se trouve une simple fonction «Ajouter» qui renvoie l'addition de deux nombres.
La fonction ci-dessus devient plus courte en utilisant la syntaxe «Flèche» comme indiqué ci-dessous.
Le code ci-dessus a deux parties comme indiqué dans le diagramme ci-dessus: -
Entrée: - Cette section spécifie les paramètres d'entrée de la fonction anonyme.
Logique: - Cette section vient après le symbole «=>». Cette section présente la logique de la fonction réelle.
De nombreux développeurs pensent que la fonction flèche rend votre syntaxe plus courte, plus simple et rend ainsi votre code lisible.
Si vous croyez à la phrase ci-dessus, laissez-moi vous assurer que c'est un mythe. Si vous pensez un instant qu'une fonction correctement écrite avec un nom est beaucoup plus lisible que les fonctions cryptiques créées sur une seule ligne à l'aide d'un symbole de flèche.
Voir le code ci-dessous dans lequel une variable globale "context" est définie, cette variable globale est accessible à l'intérieur d'une fonction "SomeOtherMethod" qui est appelée à partir d'une autre méthode "SomeMethod".
Cette "SomeMethod" a une variable "contextuelle" locale. Maintenant, parce que "SomeOtherMethod" est appelé depuis "" SomeMethod ", nous nous attendons à ce qu'il affiche le" contexte local ", mais il affiche le" contexte global ".
Mais si vous remplacez l'appel en utilisant la fonction Flèche, il affichera le "contexte local".
Je vous encourage à lire ce lien ( fonction Flèche en JavaScript ) qui explique tous les scénarios du contexte javascript et dans quels scénarios le contexte des appelants n'est pas respecté.
Vous pouvez également voir la démonstration de la fonction Flèche avec javascript dans cette vidéo youtube qui illustre pratiquement le terme Contexte.
la source
Comme d'autres l'ont dit, les fonctions régulières (traditionnelles) sont utilisées à
this
partir de l'objet qui a appelé la fonction (par exemple un bouton sur lequel vous avez cliqué) . Au lieu de cela, les fonctions fléchées utilisentthis
partir de l'objet qui définit la fonction.Considérez deux fonctions presque identiques:
L'extrait ci-dessous montre la différence fondamentale entre ce que
this
représente pour chaque fonction. La fonction régulière sort[object HTMLButtonElement]
alors que la fonction flèche sort[object Window]
.la source