Exactement ce que fait le anonyme en fonction JavaScript f => f faire?
Je suis en utilisant une bibliothèque tierce, qui a une fonction qui prend des fonctions comme arguments. Je suis en train de faire quelques conditionnelle des vérifications pour décider si ou de ne pas ajouter une fonction comme paramètre, et dans certains cas, je ne veux pas donner une fonction. Fournir la valeur null dans ce cas renvoie une erreur.
J'ai trouvé ce code qui fonctionne, mais je ne comprends pas tout ce qui se passe.
compose(__DEV__ ? devTools() : f => f)
Est f => f
équivalent à () => {}
vide d'une fonction anonyme?
- Elle renvoie un objet littéral de
f
, selon SOCIÉTÉ - pas anonyme vide, c'est l'identité.
- FWIW, vous pouvez souvent bâton construit comme cela babel pour voir ce que les équivalents dans les anciennes versions de ECMAscript sont.
- Double Possible de What le sens de "=>" (une flèche formée à partir d'égal à égal & plus grand que) en JavaScript?
- Que répondre à stackoverflow.com/questions/24900875/... ne pas répondre directement à cette question. Je savais que f => f est une fonction anonyme je ne comprenais pas exactement ce qu'il faisait. Je pense que cette question est un cas particulier et les informations fournies par Felix le Roi à propos de l'identité des fonctions est unique à cette question.
- Juste que d'un côté de la question, dans ce cas pourrait-il être utile?
- Hey Mistalis, dans redux de la composition de la fonction agit comme un pipeline, c'est une fonction qui prend les fonctions comme params et les exécute à partir de la droite vers la gauche. Le retour de chaque fonction est transmis à la fonction suivante. Dans mon cas, j'ai eu des fonctions que je ne voulais ajouter à composer SI j'étais en mode de développement, donc dans le cas que je ne suis pas en mode de développement, null ou vide d'une fonction anonyme ne fonctionnerait pas. La fonction nécessaire de prendre un param et de retour que param...donc la fonction en question. redux.js.org/docs/api/compose.html
Vous devez vous connecter pour publier un commentaire.
f => f
est similaire* pourfunction(f){ return f; }
Si proche, mais pas tout à fait ce que vous attendiez.
* - comme cela a été souligné dans les commentaires, il y a des différences subtiles, mais pour le bien de votre question, je ne pense pas qu'ils sont particulièrement pertinentes. Ils sont très utiles dans d'autres situations.
f => f
etfunction(f) { return f; }
🙂new (f => f)
jette, il a un autretoString
et pour une raison que je ne peux pas tout à fait grok(f => f).arguments
jette dans Chrome, mais pas FF ou Edge.this
est également différente. (bien que la différence peut ne pas être observables sithis
n'apparaît pas dans le corps de la fonction... je ne suis pas sûr)f => f
est le l'identité de la fonction. Il retourne simplement l'argument qui a été passé.Cette fonction est souvent utilisée en tant que valeurs par défaut pour des processus de transformation, car il n'effectue pas de transformation.
Pas. Le vide, la fonction ne retourne rien. L'identité fonction renvoie la valeur passée en argument.
Si vous voulez savoir ce que
f => f
moyens, le côté gauche est le paramètre et le côté droit est la valeur de retour. Ainsi, par exemple,f => f*2
, est équivalent à:Le code qui vous décrire renvoie tout ce qui est fourni en entrée.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
D'autres l'ont déjà mentionné ce que
f => f
fait, donc je ne vais pas aller plus profondément. Je vais juste vous expliquer le reste de la fonction, parce qu'il y a peu de différence entref => f
et__DEV__ ? devTools() : f => f
L'opérateur ternaire vérifie si
__DEV__
est un truthy valeur, et, dans l'affirmative, il le retour de la fonctiondevTools()
. sinon, il de retour de la fonction identitéf => f
qui ne fait rien. Pour le dire autrement: ce code permet à certains mode de développement des fonctions. Sans le reste du code, il est difficile de dire ce que ce mode ajoute, mais sans doute, il permettra à certains journalisation supplémentaire de l'information et de moins de dissimulation.__DEV__ ? devTools() : f => f
ne pas affecter quoi que ce soit àf
. Ne vous laissez quelque chose à partir de l'exemple de code?À tout moment avec le type de dilemme, vous pouvez utiliser Babel pour obtenir la réponse.
Il est rentré comme ceci:
BTW, => que vous avez utilisé est ES6 fonctionnalité appelée flèche d'expression.
L'autre expression de l'intérêt
serait de convertir à:
Depuis flèche expressions de fonction sont toujours anonyme il a de sens que si vous ajoutez le nom de la fonction:
serait de convertir à