-
Eu fiz essa prova, fui aprovado, e até hoje não sei como resolver isso =o
-
Essa questão ilustra o uso de funções de ordem superior, ou seja, funções que retornam outras funções. A linha "var f = base(2);" cria uma variável que remete à função "base" com o valor de x igual a 2. A linha "var g = base(-1);" cria uma variável que faz referência à função "base" com o valor de x igual a -1. Como se trata de uma função de ordem superior, as variáveis f e g fazem referência, na verdade, à função de retorno, que tem y como argumento. Assim, ao chamar f(2), o retorno é x * y = 2 (o valor de x foi atribuído na linha "f = base(2)") * 2 (o valor de y foi atribuído na linha "f(2)") = 4. Por sua vez, ao chamar g(-1), temos: x * y = -1 * -1 = 1. Por fim, f(2) + g(-1) = 5.
Referência para Javascript: https://developer.mozilla.org/pt-BR/docs/Glossary/First-class_Function
GABARITO: A
-
O pulo do gato dessa questão é perceber que a função base retorna outra função!! Então, quando ele fala que:
var f = base(2);
var g = base(-1);
Precisamos saber quais serão os valores das variáveis f e g (mas já sabemos que serão do tipo função!!!).
Ora, substituindo 2 na entrada da função base, veremos que o retorno será uma função que recebe y e retorna 2*y. Portanto:
Por sua vez, substituindo -1 na entrada da função base, veremos que o retorno será uma função que recebe y e retorna -1*y. Portanto:
Agora, é só calcular o que ele pede: f(2) + g(-1) = 2*2 -(-1) = 4+1 = 5