CodeGym /Kurs Javy /Frontend SELF PL /Ciekawe dodatki

Ciekawe dodatki

Frontend SELF PL
Poziom 46 , Lekcja 3
Dostępny

8.1 Pseudolosowe liczby

Czasami programista napotyka proste, wydawałoby się, zadania: „wybrać losowy film do wieczornego oglądania z określonej listy”, „wybrać zwycięzcę loterii”, „wymieszać listę piosenek przy potrząsaniu smartfonem”, „wybrać losową liczbę do zaszyfrowania wiadomości” i za każdym razem zadaje sobie bardzo słuszne pytanie: jak zdobyć tę losową liczbę?

W ogóle, jeśli chcesz otrzymać „prawdziwą losową liczbę”, to jest to dość trudne. Dochodzi aż do tego, że do komputera wbudowywane są specjalne matematyczne koprocesory, które potrafią generować takie liczby, spełniając wszystkie wymagania „prawdziwej losowości”.

Dlatego programiści wymyślili swoje rozwiązanie — pseudolosowe liczby. Pseudolosowe liczby to pewna sekwencja, której liczby na pierwszy rzut oka wydają się losowe, ale specjalista po dokładnej analizie może znaleźć w nich pewne regularności. Dla zaszyfrowania tajnych dokumentów takie liczby nie będą odpowiednie, ale do imitacji rzutu kostką w grze — jak najbardziej.

Istnieje wiele algorytmów generowania sekwencji pseudolosowych liczb i prawie wszystkie z nich generują następną losową liczbę na podstawie poprzedniej i jeszcze jakichś pomocniczych liczb.

Na przykład, ten program wyświetli na ekranie 1000 unikalnych liczb:

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);
      }
    
  

Swoją drogą, mówimy nie o pseudolosowych liczbach, a właśnie o sekwencji takich liczb, bo patrząc na jedną liczbę nie można zrozumieć, czy jest losowa, czy nie.

Losową liczbę można przecież uzyskać na różne sposoby:

JavaScript
    
      function getNextRandom() {
        return 4; # to na pewno losowa liczba (wyrzuciłem ją za pomocą kostek)
      }
    
  

8.2 Operator switch

Operator switch jest używany do wykonania jednego z kilku bloków kodu w zależności od wartości wyrażenia. Jest szczególnie przydatny, kiedy trzeba porównać jedną wartość z kilkoma możliwymi opcjami.

Składnia:

    
      switch(expression) {
        case value1:
          // kod, który wykona się, jeśli expression === value1
          break;
        case value2:
          // kod, który wykona się, jeśli expression === value2
          break;
        // ...
        default:
          // kod, który wykona się, jeśli żadna z wartości nie pasuje
      }
    
  

Przykład:

JavaScript
    
      let day = 3;
      let dayName;

      switch (day) {
        case 1:
          dayName = "Poniedziałek";
          break;
        case 2:
          dayName = "Wtorek";
          break;
        case 3:
          dayName = "Środa";
          break;
        case 4:
          dayName = "Czwartek";
          break;
        case 5:
          dayName = "Piątek";
          break;
        case 6:
          dayName = "Sobota";
          break;
        case 7:
          dayName = "Niedziela";
          break;
        default:
          dayName = "Nieprawidłowy dzień";
      }

      console.log(dayName); // "Środa"
    
  

8.3 Operator ??

Operator ??, czyli nullish coalescing operator, używany jest do przypisania wartości domyślnej, jeśli lewy operand jest null lub undefined. Pozwala uniknąć zastosowania wartości domyślnej dla innych fałszywych wartości, takich jak 0, false czy pusta stringa ("").

Składnia:

    
      let result = value1 ?? value2;
    
  

Jeśli value1 nie jest null ani undefined, result będzie value1. W przeciwnym razie result będzie value2.

Przykłady:

JavaScript
    
      let foo = null ?? 'default';
      console.log(foo); // 'default'

      let bar = 0 ?? 'default';
      console.log(bar); // 0 (0 nie jest null lub undefined)

      let baz = undefined ?? 'default';
      console.log(baz); // 'default'
    
  

Różnica od logicznego LUB (||)

Operator || również może być używany do zadawania wartości domyślnej, ale zwraca prawy operand dla wszystkich fałszywych wartości, takich jak 0, "" czy NaN.

Przykład porównania:

JavaScript
    
      let value = 0 || 'default';
      console.log(value); // 'default' (ponieważ 0 - fałszywa wartość)

      let value2 = 0 ?? 'default';
      console.log(value2); // 0 (ponieważ 0 nie jest null lub undefined)
    
  

Zastosowanie

Operator ?? jest użyteczny w sytuacjach, kiedy konieczne jest ustawienie wartości domyślnej tylko dla null lub undefined, ale zachowanie fałszywych wartości, takich jak 0 lub "".

Prawdziwe przykłady użycia

Przykład 1. Wartości domyślne w obiektach konfiguracji:

JavaScript
    
      function configure(settings) {
        settings = settings ?? {};
        let timeout = settings.timeout ?? 1000;
        let color = settings.color ?? 'blue';
        // reszta logiki konfiguracji
      }
    
  

Przykład 2. Parametry domyślne dla funkcji:

JavaScript
    
      function printMessage(message) {
        message = message ?? 'No message provided';
        console.log(message);
      }

      printMessage(null); // 'No message provided'
      printMessage('Hello'); // 'Hello'
    
  

Użycie operatora ?? pozwala pisać bardziej czysty i przewidywalny kod, szczególnie w sytuacjach, kiedy ważne jest uwzględnienie tylko braku wartości (null lub undefined).

1
Опрос
Ciasteczka, WebStorage i Web API,  46 уровень,  3 лекция
недоступен
Ciasteczka, WebStorage i Web API
Ciasteczka, WebStorage i Web API
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION