Eu sei que o >=
operador significa mais que ou igual a, mas já vi =>
em algum código-fonte. Qual o significado desse operador?
Aqui está o 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
fonte
fonte
Respostas:
O que é isso
Esta é uma função de seta. As funções de seta são uma sintaxe curta, introduzida pelo ECMAscript 6, que pode ser usada de maneira semelhante à maneira como você usaria expressões de função. Em outras palavras, você pode frequentemente usá-los no lugar de expressões como
function (foo) {...}
. Mas eles têm algumas diferenças importantes. Por exemplo, eles não vinculam seus próprios valores dethis
(veja a discussão abaixo).As funções de seta fazem parte da especificação ECMAscript 6. Eles ainda não são suportados em todos os navegadores, mas são parcial ou totalmente suportados no Node v. 4.0+ e na maioria dos navegadores modernos em uso a partir de 2018. (Incluí uma lista parcial dos navegadores de suporte abaixo).
Você pode ler mais na documentação do Mozilla sobre funções de seta .
Na documentação do Mozilla:
Uma nota sobre como
this
funciona as funções de setaUm dos recursos mais úteis de uma função de seta está oculto no texto acima:
O que isso significa em termos mais simples é que a função de seta retém o
this
valor de seu contexto e não possui o seu própriothis
. Uma função tradicional pode vincular seu própriothis
valor, dependendo de como é definida e chamada. Isso pode exigir muita ginásticaself = this;
, etc., para acessar ou manipular athis
partir de uma função dentro de outra função. Para mais informações sobre este tópico, consulte a explicação e os exemplos na documentação do Mozilla .Código de exemplo
Exemplo (também dos documentos):
Notas sobre compatibilidade
Você pode usar as funções de seta no Nó, mas o suporte ao navegador é irregular.
O suporte ao navegador para essa funcionalidade melhorou bastante, mas ainda não é amplo o suficiente para a maioria dos usos baseados no navegador. Em 12 de dezembro de 2017, ele é suportado nas versões atuais de:
Não suportado em:
Você pode encontrar mais informações (e mais atuais) em CanIUse.com (sem afiliação).
fonte
Isso é conhecido como uma função de seta, parte das especificações do ECMAScript 2015 ...
Sintaxe mais curta que a anterior:
DEMO
A outra coisa impressionante é lexical
this
... Normalmente, você faria algo como:Mas isso pode ser reescrito com a seta assim:
DEMO
MDN
Mais sobre sintaxe
Para mais, aqui está uma resposta muito boa para quando usar as funções de seta.
fonte
Essa seria a "expressão da função da seta" introduzida no ECMAScript 6.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/arrow_functions
Para propósitos históricos (se a página da wiki mudar posteriormente), é:
fonte
Estas são as funções de seta
Também conhecido como Fat Arrow Functions . Eles são uma maneira limpa e concisa de escrever expressões de função, por exemplo
function() {}
.Seta As funções podem eliminar a necessidade de
function
,return
e{}
ao definir funções. Eles são one-liners, semelhantes às expressões Lambda em Java ou Python.Exemplo sem parâmetros
Se várias instruções precisarem ser feitas na mesma Função Seta, você precisará agrupar, neste exemplo,
queue[0]
entre colchetes{}
. Nesse caso, a declaração de retorno não pode ser omitida.Exemplo com 1 parâmetro
Você pode omitir
{}
o acima.Quando existe um único parâmetro, os colchetes
()
ao redor do parâmetro podem ser omitidos.Exemplo com vários parâmetros
Um exemplo útil
Se quiséssemos obter o preço de cada fruta em uma única matriz, no ES5 poderíamos:
No ES6 com as novas funções de seta, podemos tornar isso mais conciso:
Informações adicionais sobre as funções de seta podem ser encontradas aqui .
Compatibilidade do navegador
Informações adicionais atualizadas podem ser encontradas na compatibilidade do navegador aqui
fonte
apenas para adicionar outro exemplo do que um lambda pode fazer sem usar o mapa:
fonte
Como outros já disseram, é uma nova sintaxe para criar funções.
No entanto, esse tipo de função difere das normais:
Eles vinculam o
this
valor. Conforme explicado pelas especificações ,Eles não são construtores.
Isso significa que eles não têm um método interno e, portanto, não podem ser instanciados, por exemplo
fonte
Eu li, este é um símbolo de
Arrow Functions
emES6
isto
usando
Arrow Function
pode ser escrito comoDocumentos MDN
fonte
Adicionando exemplo simples de CRUD com Arrowfunction
fonte
Insatisfeito com as outras respostas. A resposta mais votada em 2019/3/13 está realmente errada.
A versão resumida curta do que
=>
significa é que é um atalho para escrever uma função E para vinculá-la à atualthis
É efetivamente um atalho para
Você pode ver todas as coisas que foram encurtadas. Não precisávamos
function
, nemreturn
nem.bind(this)
nem chaves nem parêntesesUm exemplo um pouco mais longo de uma função de seta pode ser
Mostrando que, se queremos múltiplos argumentos para a função, precisamos de parênteses e se queremos escrever mais do que uma única expressão, precisamos de chaves e um explícito
return
.É importante entender a
.bind
parte e é um grande tópico. Tem a ver com o quethis
significa em JavaScript.Todas as funções têm um parâmetro implícito chamado
this
. Comothis
é definido ao chamar uma função depende de como essa função é chamada.Toma
Se você chamar normalmente
this
será o objeto global.Se você estiver no modo estrito
Será
undefined
Você pode definir
this
diretamente usandocall
ouapply
Você também pode definir
this
implicitamente usando o operador de ponto.
Um problema surge quando você deseja usar uma função como retorno de chamada ou ouvinte. Você cria a classe e deseja atribuir uma função como retorno de chamada que acessa uma instância da classe.
O código acima não funcionará porque quando o elemento acionar o evento e chamar a função, o
this
valor não será a instância da classe.Uma maneira comum de resolver esse problema é usar
.bind
Como a sintaxe da seta faz a mesma coisa que podemos escrever
bind
efetivamente cria uma nova função . Sebind
não existisse, você poderia basicamente fazer o seu próprio como esteNo JavaScript antigo, sem o operador de propagação, seria
A compreensão desse código requer um entendimento dos fechamentos, mas a versão curta
bind
cria uma nova função que sempre chama a função original com othis
valor que estava vinculado a ela. A função de seta faz a mesma coisa, pois é um atalho parabind(this)
fonte
Como todas as outras respostas já disseram, isso faz parte da sintaxe da função de seta do ES2015. Mais especificamente, não é um operador, é um pontuador token que separa os parâmetros do corpo:
ArrowFunction : ArrowParameters => ConciseBody
. Por exemplo(params) => { /* body */ }
.fonte
ES6
Funções de seta:Em javascript,
=>
é o símbolo de uma expressão de função de seta. Uma expressão de função de seta não tem sua própriathis
ligação e, portanto, não pode ser usada como uma função construtora. por exemplo:Regras de uso das funções de seta:
{}
areturn
instrução ePor exemplo:
fonte
As funções de seta, indicadas pelo símbolo (=>), ajudam a criar funções e métodos anônimos. Isso leva a uma sintaxe mais curta. Por exemplo, abaixo está uma função simples "Adicionar" que retorna a adição de dois números.
A função acima fica mais curta usando a sintaxe “Seta”, como mostrado abaixo.
O código acima tem duas partes, como mostrado no diagrama acima: -
Entrada: - Esta seção especifica os parâmetros de entrada para a função anônima.
Lógica: - Esta seção vem após o símbolo "=>". Esta seção possui a lógica da função real.
Muitos desenvolvedores pensam que a função seta torna sua sintaxe mais curta, mais simples e, portanto, torna seu código legível.
Se você acredita na frase acima, deixe-me garantir que é um mito. Se você pensa por um momento, uma função corretamente escrita com nome é muito legível do que funções criptografadas criadas em uma linha usando um símbolo de seta.
Veja o código abaixo no qual tem uma variável global "contexto" definida, essa variável global é acessada dentro de uma função "SomeOtherMethod" que é chamada de outro método "SomeMethod".
Este "SomeMethod" possui variável local "context". Agora, como "SomeOtherMethod" é chamado de "" SomeMethod ", esperamos que ele exiba" contexto local ", mas exibe" contexto global ".
Mas se substituir a chamada usando a função Seta, ela exibirá "contexto local".
Recomendamos que você leia este link ( função Seta em JavaScript ), que explica todos os cenários do contexto javascript e em quais cenários o contexto dos chamadores não é respeitado.
Você também pode ver a demonstração da função Seta com javascript neste vídeo do youtube, que demonstra praticamente o termo Contexto.
fonte
Como outros já declararam, funções regulares (tradicionais) são usadas
this
no objeto que chamou a função (por exemplo, um botão que foi clicado) . Em vez disso, as funções de seta são usadasthis
no objeto que define a função.Considere duas funções quase idênticas:
O trecho abaixo demonstra a diferença fundamental entre o que
this
representa para cada função. A função regular é exibida,[object HTMLButtonElement]
enquanto a função de seta é exibida[object Window]
.fonte