Sé que el >=
operador significa más o igual que, pero lo he visto =>
en algún código fuente. ¿Cuál es el significado de ese operador?
Aquí está el código:
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
fuente
fuente
Respuestas:
Lo que es
Esta es una función de flecha. Las funciones de flecha son una sintaxis corta, introducida por ECMAscript 6, que se puede usar de manera similar a la forma en que usaría expresiones de función. En otras palabras, a menudo puede usarlos en lugar de expresiones como
function (foo) {...}
. Pero tienen algunas diferencias importantes. Por ejemplo, no vinculan sus propios valores dethis
(ver más abajo para discusión).Las funciones de flecha son parte de la especificación ECMAscript 6. Todavía no son compatibles con todos los navegadores, pero son parcial o totalmente compatibles con Node v. 4.0+ y en la mayoría de los navegadores modernos en uso a partir de 2018. (He incluido una lista parcial de navegadores compatibles a continuación).
Puede leer más en la documentación de Mozilla sobre funciones de flecha .
De la documentación de Mozilla:
Una nota sobre cómo
this
funciona en las funciones de flechaUna de las características más útiles de una función de flecha está enterrada en el texto anterior:
Lo que esto significa en términos más simples es que la función de flecha retiene el
this
valor de su contexto y no tiene el suyothis
. Una función tradicional puede unir su propiothis
valor, dependiendo de cómo se define y se llama. Esto puede requerir mucha gimnasia comoself = this;
, etc., para acceder o manipularthis
desde una función dentro de otra función. Para obtener más información sobre este tema, consulte la explicación y los ejemplos en la documentación de Mozilla .Código de ejemplo
Ejemplo (también de los documentos):
Notas sobre compatibilidad
Puede usar las funciones de flecha en Node, pero el soporte del navegador es irregular.
El soporte del navegador para esta funcionalidad ha mejorado bastante, pero aún no está lo suficientemente extendido para la mayoría de los usos basados en el navegador. A partir del 12 de diciembre de 2017, es compatible con las versiones actuales de:
No soportado en:
Puede encontrar más información (y más actual) en CanIUse.com (sin afiliación).
fuente
Eso se conoce como una función de flecha, parte de la especificación ECMAScript 2015 ...
Sintaxis más corta que la anterior:
MANIFESTACIÓN
La otra cosa increíble es léxica
this
... Por lo general, harías algo como:Pero eso podría reescribirse con la flecha como esta:
MANIFESTACIÓN
MDN
Más sobre sintaxis
Para más información, aquí hay una respuesta bastante buena sobre cuándo usar las funciones de flecha.
fuente
Esta sería la "expresión de función de flecha" introducida en ECMAScript 6.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
Para fines históricos (si la página wiki cambia más adelante), es:
fuente
Estas son funciones de flecha
También conocido como Fat Arrow Functions . Son una forma limpia y concisa de escribir expresiones de funciones, por ej.
function() {}
.Funciones flecha puede eliminar la necesidad de
function
,return
y{}
en la definición de funciones. Son de una sola línea, similares a las expresiones Lambda en Java o Python.Ejemplo sin parámetros
Si es necesario realizar varias declaraciones dentro de la misma función de flecha, debe ajustar, en este ejemplo,
queue[0]
entre paréntesis{}
. En este caso, la declaración de devolución no se puede omitir.Ejemplo con 1 parámetro
Puedes omitir
{}
de lo anterior.Cuando hay un solo parámetro, los corchetes
()
se pueden omitir alrededor del parámetro.Ejemplo con múltiples parámetros
Un ejemplo útil
Si quisiéramos obtener el precio de cada fruta en una sola matriz, en ES5 podríamos hacer:
En ES6 con las nuevas funciones de flecha, podemos hacer esto más conciso:
Puede encontrar información adicional sobre las funciones de flecha aquí .
Compatibilidad del navegador
Puede encontrar información actualizada adicional sobre la compatibilidad del navegador aquí
fuente
solo para agregar otro ejemplo de lo que una lambda puede hacer sin usar map:
fuente
Como otros han dicho, es una nueva sintaxis para crear funciones.
Sin embargo, este tipo de funciones difieren de las normales:
Atan el
this
valor. Como se explica en la especificación ,Son no constructores.
Eso significa que no tienen un método interno [[Construir]] y, por lo tanto, no se pueden crear instancias, por ejemplo
fuente
He leído, este es un símbolo de
Arrow Functions
enES6
esta
utilizando
Arrow Function
se puede escribir comoMDN Docs
fuente
Agregar un ejemplo CRUD simple con Arrowfunction
fuente
Insatisfecho con las otras respuestas. La respuesta más votada a partir del 3/3/13 es objetivamente errónea.
La versión abreviada de lo que
=>
significa es que es un acceso directo que escribe una función Y para vincularla a la actualthis
Es efectivamente un atajo para
Puedes ver todas las cosas que se acortaron. No necesitábamos
function
, nireturn
tampoco.bind(this)
ni siquiera llaves o paréntesisUn ejemplo un poco más largo de una función de flecha podría ser
Demostrando que si queremos múltiples argumentos para la función necesitamos paréntesis y si queremos escribir más de una sola expresión, necesitamos llaves y un código explícito
return
.Es importante entender la
.bind
parte y es un gran tema. Tiene que ver con lo quethis
significa en JavaScript.TODAS las funciones tienen un parámetro implícito llamado
this
. Cómothis
se establece cuando se llama a una función depende de cómo se llama esa función.Tomar
Si lo llamas normalmente
this
Será el objeto global.Si estás en modo estricto
Será
undefined
Puede configurar
this
directamente usandocall
oapply
También puede establecer
this
implícitamente utilizando el operador de punto.
Un problema surge cuando desea utilizar una función como una devolución de llamada o un oyente. Hace la clase y desea asignar una función como la devolución de llamada que accede a una instancia de la clase.
El código anterior no funcionará porque cuando el elemento activa el evento y llama a la función, el
this
valor no será la instancia de la clase.Una forma común de resolver ese problema es usar
.bind
Debido a que la sintaxis de la flecha hace lo mismo que podemos escribir
bind
Efectivamente hace una nueva función . Sibind
no existiera, básicamente podría hacer el suyo asíEn JavaScript anterior sin el operador de propagación sería
Comprender que el código requiere una comprensión de los cierres, pero la versión corta es
bind
una nueva función que siempre llama a la función original con elthis
valor que estaba vinculado a ella. la función de flecha hace lo mismo ya que son un atajo parabind(this)
fuente
Como todas las otras respuestas ya han dicho, es parte de la sintaxis de la función de flecha ES2015. Más específicamente, no es un operador, que es una Punctuator token que separa los parámetros desde el cuerpo:
ArrowFunction : ArrowParameters => ConciseBody
. Por ej(params) => { /* body */ }
.fuente
ES6
Funciones de flecha:En javascript,
=>
es el símbolo de una expresión de función de flecha. Una expresión de función de flecha no tiene su propiothis
enlace y, por lo tanto, no se puede usar como una función constructora. por ejemplo:Reglas de uso de funciones de flecha:
{}
y lareturn
declaraciónPor ejemplo:
fuente
Las funciones de flecha que se denotan con el símbolo (=>) lo ayudan a crear funciones y métodos anónimos. Eso lleva a una sintaxis más corta. Por ejemplo, a continuación hay una función simple "Agregar" que devuelve la suma de dos números.
La función anterior se acorta utilizando la sintaxis de "Flecha" como se muestra a continuación.
El código anterior tiene dos partes como se muestra en el diagrama anterior: -
Entrada: esta sección especifica los parámetros de entrada para la función anónima.
Lógica: esta sección viene después del símbolo "=>". Esta sección tiene la lógica de la función real.
Muchos desarrolladores piensan que la función de flecha hace que su sintaxis sea más corta, simple y, por lo tanto, hace que su código sea legible.
Si crees en la oración anterior, déjame asegurarte que es un mito. Si piensa por un momento, una función escrita correctamente con nombre es mucho más legible que las funciones crípticas creadas en una línea usando un símbolo de flecha.
Consulte el siguiente código en el que se define una variable global "contexto", se accede a esta variable global dentro de una función "SomeOtherMethod" que se llama desde otro método "SomeMethod".
Este "SomeMethod" tiene una variable de "contexto" local. Ahora porque "SomeOtherMethod" se llama desde "" SomeMethod "esperamos que muestre" contexto local ", pero muestra" contexto global ".
Pero si reemplaza la llamada con la función de flecha, mostrará "contexto local".
Te animo a leer este enlace ( función de flecha en JavaScript ) que explica todos los escenarios del contexto de JavaScript y en qué escenarios no se respeta el contexto de las personas que llaman.
También puede ver la demostración de la función de flecha con javascript en este video de youtube que muestra prácticamente el término Contexto.
fuente
Como han dicho otros, las funciones regulares (tradicionales) se utilizan
this
desde el objeto que llamó a la función (por ejemplo, un botón en el que se hizo clic) . En cambio, las funciones de flecha se usanthis
desde el objeto que define la función.Considere dos funciones casi idénticas:
El fragmento a continuación muestra la diferencia fundamental entre lo que
this
representa para cada función. La función regular sale[object HTMLButtonElement]
mientras que la función de flecha sale[object Window]
.fuente