JavaScript é uma linguagem dinâmica, que dá suporte a estilos orientados a objetos, imperativos e declarativos (por exemplo, programação funcional).
Existem algumas formas principais de atribuir valores a nomes em JavaScript: usando variáveis ou constantes. No Exercism, as variáveis são sempre escritas em camelCase; as constantes são escritas em SCREAMING_SNAKE_CASE. Não há um guia oficial a seguir, e empresas e organizações diferentes têm guias de estilo diferentes. Fique à vontade para escrever as variáveis como quiser. A vantagem de escrevê-las do jeito que os exercícios são preparados é que elas vão aparecer destacadas de forma diferente na interface web e na maioria das 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 existência quando se usa let ou var.
Por exemplo, myFirstVariable pode ser definida e redefinida várias vezes usando 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 receber uma atribuição uma única vez.
É assim que se definem constantes em JavaScript.
const MY_FIRST_CONSTANT = 10;
// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
💡 Em um exercício de conceito mais adiante, a diferença entre a atribuição de uma constante, a vinculação de uma constante e o valor de uma constante é explorada e explicada.
Em JavaScript, as unidades de funcionalidade são encapsuladas em funções, geralmente agrupando no mesmo arquivo as funções que pertencem umas às outras.
Essas funções têm parâmetros (para que possam receber argumentos) e podem retornar um valor usando 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.
Ela tem dois parâmetros, num1 e num2.
Ela retorna um valor: o resultado da expressão num1 + num2
Em seguida, a função add é chamada com dois argumentos: 1 e 3.
O resultado da função, o valor retornado, é 4.
💡 Em JavaScript existem muitas maneiras diferentes de declarar uma função.
Algumas dessas outras maneiras são diferentes do uso da palavra-chave function.
A trilha tenta apresentá-las aos poucos, mas se você já as conhece, fique à 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 arquivos, é preciso exportá-las usando a palavra-chave export.
Outro arquivo pode então importá-las usando a palavra-chave import.
Isso também é conhecido como sistema de módulos.
Um ótimo exemplo é como todos os testes funcionam.
Cada exercício tem pelo menos um arquivo, por exemplo lasagna.js, que contém a implementação.
A implementação é marcada com export no arquivo, o que a deixa disponível para importação em outro arquivo.
Além disso, há pelo menos um outro arquivo, por exemplo lasagna.spec.js, que contém os testes.
Esse arquivo importa (com import) as entidades públicas (ou seja, as que foram 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 de Lucian está voltando para casa e ele ainda não preparou o jantar de aniversário de namoro deles!
Neste exercício, você vai escrever um código para ajudar o Lucian a preparar uma lasanha requintada do livro de receitas favorito dele.
Você tem quatro tarefas relacionadas ao tempo gasto no preparo da lasanha.
Defina a constante EXPECTED_MINUTES_IN_OVEN que representa quantos minutos a lasanha deve ficar no forno. Ela precisa ser exportada. De acordo com o livro de receitas, o tempo esperado no forno em minutos é 40.
Implemente a função remainingMinutesInOven que recebe como parâmetro os minutos reais que a lasanha já passou no forno e retorna quantos minutos a lasanha ainda precisa ficar no forno, com base no tempo esperado no forno em minutos da tarefa anterior.
remainingMinutesInOven(30);
// => 10
Implemente a função preparationTimeInMinutes que recebe como parâmetro o número de camadas que você adicionou à lasanha e retorna quantos minutos você gastou preparando a lasanha, considerando que cada camada leva 2 minutos para preparar.
preparationTimeInMinutes(2);
// => 4
Implemente a função totalTimeInMinutes que recebe dois parâmetros: o parâmetro numberOfLayers é o número de camadas que você adicionou à lasanha, e o parâmetro actualMinutesInOven é o número de minutos que a lasanha já passou no forno. A função deve retornar quantos minutos no total você trabalhou no preparo da lasanha, ou seja, a soma do tempo de preparo em minutos com o tempo em minutos que a lasanha passou no forno até o momento.
totalTimeInMinutes(3, 20);
// => 26
Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.