O JavaScript é uma linguagem dinâmica, que suporta estilos orientados a objetos, imperativos e declarativos (por exemplo, programação funcional).
Há algumas formas principais de atribuir valores a nomes em JavaScript: usar variáveis ou constantes. No Exercism, as variáveis escrevem-se sempre em camelCase; as constantes escrevem-se em SCREAMING_SNAKE_CASE. Não existe um guia oficial a seguir, e várias empresas e organizações têm guias de estilo diferentes. Escreve as variáveis como bem quiseres. A vantagem de as escrever da forma como os exercícios estão preparados é que ficam destacadas de forma diferente na interface web e na maioria dos IDEs.
Em JavaScript, as variáveis podem ser definidas com a palavra-chave const, let ou var.
Uma variável pode referenciar valores diferentes ao longo da sua vida quando usas let ou var.
Por exemplo, myFirstVariable pode ser definida e redefinida muitas vezes com o operador de atribuição =:
let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();
Ao contrário de let e var, as variáveis definidas com const só podem ser atribuídas uma vez.
Isto é usado para definir constantes em JavaScript.
const MY_FIRST_CONSTANT = 10;
// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
💡 Num exercício de conceito mais à frente, explora-se e explica-se a diferença entre atribuição de constante, ligação de constante e valor de constante.
Em JavaScript, as unidades de funcionalidade são encapsuladas em funções, normalmente agrupando funções no mesmo ficheiro se pertencerem umas às outras.
Estas funções têm parâmetros (para poderem receber argumentos) e podem devolver um valor com a palavra-chave return.
As funções são invocadas com a sintaxe ().
function add(num1, num2) {
return num1 + num2;
}
add(1, 3);
// => 4
Neste exemplo, o nome da função é add.
Tem dois parâmetros, num1 e num2.
Devolve um valor: o resultado da expressão num1 + num2
Depois, a função add é chamada com dois argumentos: 1 e 3.
O resultado da função, o valor devolvido, é 4.
💡 Em JavaScript há muitas formas diferentes de declarar uma função.
Algumas dessas outras formas parecem diferentes de usar a palavra-chave function.
O percurso tenta introduzi-las gradualmente, mas se já as conheces, sente-te à vontade para usar qualquer uma delas.
Na maioria dos casos, usar uma ou outra não é melhor nem pior.
Para tornar uma function, uma constante ou uma variável disponível em outros ficheiros, é preciso exportá-las com a palavra-chave export.
Outro ficheiro pode depois importá-las com a palavra-chave import.
Isto também é conhecido como o sistema de módulos.
Um bom exemplo é como funcionam todos os testes.
Cada exercício tem pelo menos um ficheiro, por exemplo lasagna.js, que contém a implementação.
A implementação é exportada do ficheiro, ficando disponível para importar noutro ficheiro.
Além disso, há pelo menos outro ficheiro, por exemplo lasagna.spec.js, que contém os testes.
Este ficheiro faz import das entidades públicas (ou seja, exportadas) para poder testar a implementação:
// file.js
export const MY_VALUE = 10;
export function add(num1, num2) {
return num1 + num2;
}
// file.spec.js
import { MY_VALUE, add } from './file';
add(MY_VALUE, 5);
// => 15
A namorada do Lucian está a caminho de casa e ele ainda não preparou o jantar de aniversário dos dois!
Neste exercício, vais escrever algum código para ajudar o Lucian a fazer uma lasanha requintada do seu livro de receitas preferido.
Tens quatro tarefas relacionadas com o tempo gasto a cozinhar a lasanha.
Define a constante EXPECTED_MINUTES_IN_OVEN, que representa quantos minutos a lasanha deve estar no forno. Tem de ser exportada. De acordo com o livro de receitas, o tempo esperado no forno, em minutos, é 40.
Implementa a função remainingMinutesInOven, que recebe como parâmetro os minutos reais que a lasanha já esteve no forno e devolve quantos minutos a lasanha ainda tem de permanecer no forno, com base no tempo esperado no forno, em minutos da tarefa anterior.
remainingMinutesInOven(30);
// => 10
Implementa a função preparationTimeInMinutes, que recebe como parâmetro o número de camadas que adicionaste à lasanha e devolve quantos minutos gastaste a preparar a lasanha, assumindo que cada camada demora 2 minutos a preparar.
preparationTimeInMinutes(2);
// => 4
Implementa a função totalTimeInMinutes, que recebe dois parâmetros: o parâmetro numberOfLayers é o número de camadas que adicionaste à lasanha e o parâmetro actualMinutesInOven é o número de minutos que a lasanha já esteve no forno. A função deve devolver quantos minutos, no total, trabalhaste a cozinhar a lasanha, ou seja, a soma do tempo de preparação, em minutos, com o tempo, em minutos, que a lasanha já passou no forno até ao momento.
totalTimeInMinutes(3, 20);
// => 26
Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.