CodeGym /Cursos /Frontend SELF PT /Adições Interessantes

Adições Interessantes

Frontend SELF PT
Nível 46 , Lição 3
Disponível

8.1 Números Pseudoaleatórios

Às vezes, o programador se depara com tarefas aparentemente simples: "escolher um filme aleatório para assistir à noite de uma lista determinada", "escolher o vencedor de uma loteria", "embaralhar uma lista de músicas ao agitar o smartphone", "escolher um número aleatório para criptografar uma mensagem", e cada vez surge uma pergunta muito natural: como obter esse número aleatório afinal?

Na verdade, se você precisa de "um número verdadeiramente aleatório", é bem complicado. Até a ponto de inserir no computador coprocessadores matemáticos especiais que consigam gerar esses números, cumprindo todos os requisitos de "aleatoriedade verdadeira".

Então os programadores criaram sua própria solução — números pseudoaleatórios. Números pseudoaleatórios são uma sequência que, à primeira vista, parece aleatória, mas um especialista, ao analisar detalhadamente, pode encontrar padrões determinados. Para criptografar documentos secretos, esses números não são adequados, mas para simular a rolagem de dados em um jogo, servem bem.

Há muitos algoritmos para gerar sequências de números pseudoaleatórios e quase todos geram o próximo número aleatório com base no anterior e em alguns outros números auxiliares.

Por exemplo, este programa exibirá na tela 1000 números não repetidos:

JavaScript
    
      let a = 41;
      let c = 11119;
      let m = 11113;
      let seed = 1;

      function getNextRandom() {
        seed = (a * seed + c) % m;
        return seed;
      }

      for (let t = 0; t < 1000; t++) {
        let x = getNextRandom();
        console.log(x);
      }
    
  

A propósito, não falamos sobre números pseudoaleatórios, mas sim sobre a sequência desses números, porque ao olhar para um número só não dá para saber se é aleatório ou não.

Um número aleatório pode ser obtido de várias maneiras:

JavaScript
    
      function getNextRandom() {
        return 4; # esse é definitivamente um número aleatório (eu joguei com dados)
      }
    
  

8.2 Operador switch

O operador switch é usado para executar um de vários blocos de código dependendo do valor de uma expressão. Ele é especialmente útil quando precisamos comparar um valor com várias opções possíveis.

Sintaxe:

    
      switch(expression) {
        case value1:
          // código que será executado se expression === value1
          break;
        case value2:
          // código que será executado se expression === value2
          break;
        // ...
        default:
          // código que será executado se nenhum dos valores corresponder
      }
    
  

Exemplo:

JavaScript
    
      let day = 3;
      let dayName;

      switch (day) {
        case 1:
          dayName = "Segunda-feira";
          break;
        case 2:
          dayName = "Terça-feira";
          break;
        case 3:
          dayName = "Quarta-feira";
          break;
        case 4:
          dayName = "Quinta-feira";
          break;
        case 5:
          dayName = "Sexta-feira";
          break;
        case 6:
          dayName = "Sábado";
          break;
        case 7:
          dayName = "Domingo";
          break;
        default:
          dayName = "Dia inválido";
      }

      console.log(dayName); // "Quarta-feira"
    
  

8.3 Operador ??

O operador ??, ou nullish coalescing operator, é usado para atribuir um valor padrão se o operando à esquerda for null ou undefined. Ele permite evitar a aplicação do valor padrão para outros valores falsos, como 0, false, ou string vazia ("").

Sintaxe:

    
      let result = value1 ?? value2;
    
  

Se value1 não for null ou undefined, result será value1. Caso contrário, result será value2.

Exemplos:

JavaScript
    
      let foo = null ?? 'padrão';
      console.log(foo); // 'padrão'

      let bar = 0 ?? 'padrão';
      console.log(bar); // 0 (0 não é null ou undefined)

      let baz = undefined ?? 'padrão';
      console.log(baz); // 'padrão'
    
  

Diferença do operador lógico OU (||)

O operador || também pode ser usado para definir um valor padrão, mas ele retorna o operando à direita para quaisquer valores falsos, como 0, "", ou NaN.

Exemplo de comparação:

JavaScript
    
      let value = 0 || 'padrão';
      console.log(value); // 'padrão' (porque 0 é um valor falso)

      let value2 = 0 ?? 'padrão';
      console.log(value2); // 0 (porque 0 não é null ou undefined)
    
  

Aplicação

O operador ?? é útil em situações onde precisamos definir um valor padrão apenas para null ou undefined, mas manter valores falsos, como 0 ou "".

Exemplos reais de uso

Exemplo 1. Valores padrões em objetos de configuração:

JavaScript
    
      function configure(settings) {
        settings = settings ?? {};
        let timeout = settings.timeout ?? 1000;
        let color = settings.color ?? 'azul';
        // resto da lógica de configuração
      }
    
  

Exemplo 2. Parâmetros padrões para funções:

JavaScript
    
      function printMessage(message) {
        message = message ?? 'Nenhuma mensagem fornecida';
        console.log(message);
      }

      printMessage(null); // 'Nenhuma mensagem fornecida'
      printMessage('Olá'); // 'Olá'
    
  

Usar o operador ?? permite escrever um código mais limpo e previsível, especialmente em situações onde é importante considerar apenas a ausência de valor (null ou undefined).

1
Pesquisa/teste
Cookies, WebStorage e Web API, nível 46, lição 3
Indisponível
Cookies, WebStorage e Web API
Cookies, WebStorage e Web API
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION