Subtitles translated from English
Showing Revision 1 created 02/22/2013 by Lucilia Figueiredo.
-
Title:
06-29 Anonymous Functions
-
Description:
-
Uma das coisas legais do nosso interpretador JavaScript
-
é que ele provê suporte para funções anônimas e funções aninhadas.
-
Entretanto, essas características podem ser difíceis de testar. Então vamos tentar isso juntos.
-
Lembre-se deste exemplo Python, que vimos antes,
-
onde temos uma definição aninhada da função greeter, que retornamos,
-
e a saída final do programa seria "hello gracie".
-
Vou escrever este mesmo programa em Javascript.
-
Fora algumas pequenas diferenças sintáticas, o conteúdo é o mesmo.
-
Criamos uma variável -- greeting -- inicializamos com "hola" -- a variável greeting é "hola".
-
Vamos definir esta função makegreeter, com um argumento, chamado greeting.
-
Definir a função makegreeter com um argumento, chamdo greeting.
-
Então vamos fazer esta função aninhada greeeter,
-
que tem um argumento -- person. E aqui, a variável local greeter é uma função,
-
que tem um argumento -- person.
-
Então, onde em Python usamos def, em JavaScript usamos a palavra chave function.
-
O argumento person é o mesmo.
-
Ao invés de print, chamamos write, ou document.write. E retornamos greeter.
-
sayhello é uma variável igual a makegreeter("hello") --
-
a variável sayhello é o resultado de chamar makegreeter("hello").
-
E depois fazemos isso no final.
-
Então, a parte realmente importante é aqui.
-
Em JavaScript, você pode usar a palavra function para construir uma nova função, em qualquer lugar,
-
sem ter que dar um nome a ela, mas nós a atribuímos à variável greeter,
-
quase imediatamente.
-
Então você pode usá-la no nível mais alto, para construir uma função com um nome,
-
ou pode usá-la no nível mais interno --
-
veja, aqui simplesmente temos function e depois listamos os argumentos,
-
não damos um nome aqui.
-
Isso é algumas vezes chamado de função anônima,
-
porque não tem um nome imediatamente.
-
Então, como teste, vamos prover suporte para essas funções anônimas
-
em nosso interpretador JavaScript.
-
Eu vou escrever a primeira parte, e voc6e preenche os detalhes chave.
-
Funções anônimas são expressòes.
-
Sabemos isso, já que elas podem vir do lado direito de algo como isso.
-
Qualquer coisa do lado direito de um var ou de um comando de atribuição é uma expressão.
-
Existem vários tipos diferentes de expressòes:
-
"numbers", "strings", "binops"...
-
Vamos tratar apenas a parte de funções agora.
-
Portanto, como um exemplo, digamos que temos uma função de duas variáveis -- x e y --
-
que retorna a soma das duas.
-
A árvore da sintaxe abstrata que obtemos terá "function',
-
nesta posição de identificação, nos informando o tipo do nodo,
-
e então terá uma lista de parâmetros,
-
e enTao o corpo -- uma lista de comandos.
-
E o que eu quero que você aça neste teste é que preencha esses 4 espaços em branco.
-
Queremos retornar um valor particular --
-
um valor correspondente a uma função.
-
Isso irá requerer que você pense novamente em como nós tratamos definições de funções
-
e chamadas de funções, em nosso interpretador, anteriormente.
-
Mas aqui está uma dica: uma função era uma tupla, contendo a palavra "function" no início,
-
e depois, em alguma ordem, o corpo, o ambiente e os parâmetros.
-
Preencha então.