YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← 06-29 Anonymous Functions

06-29 Funções Anônimas

Get Embed Code
3 Languages

Subtitles translated from English Showing Revision 1 created 02/22/2013 by Lucilia Figueiredo.

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