JavaRush /Курси /Frontend SELF UA /Цікаві доповнення

Цікаві доповнення

Frontend SELF UA
Рівень 46 , Лекція 3
Відкрита

8.1 Псевдовипадкові числа

Іноді програміст стикається з простими, здавалося б, завданнями: «обрати випадковий фільм для вечірнього перегляду зі списку», «вибрати переможця лотереї», «перемішати список пісень при струшуванні смартфона», «обрати випадкове число для шифрування повідомлення», і кожного разу в нього виникає цілком закономірне питання: а як отримати саме це випадкове число?

Взагалі-то, якщо тобі потрібно отримати «справжнє випадкове число», зробити це доволі складно. Іноді навіть у комп'ютер вбудовують спеціальні математичні сопроцесори, які вміють генерувати такі числа, дотримуючись вимог до «істинної випадковості».

Тому програмісти придумали своє рішення — псевдовипадкові числа. Псевдовипадкові числа — це деяка послідовність, числа в якій на перший погляд здаються випадковими, але спеціаліст при детальному аналізі зможе знайти в них певні закономірності. Для шифрування секретних документів такі числа не підійдуть, але для імітації кидання кубика в грі — цілком.

Є багато алгоритмів генерації послідовності псевдовипадкових чисел і майже всі з них генерують наступне випадкове число на основі попереднього та ще якихось допоміжних чисел.

Наприклад, дана програма виведе на екран 1000 неповторюваних чисел:

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

До речі, ми говоримо не про псевдовипадкові числа, а саме про послідовність таких чисел, адже, дивлячись на одне число, неможливо зрозуміти, випадкове воно чи ні.

Випадкове число можна отримати різними способами:

JavaScript
    
      function getNextRandom() {
        return 4; // це точно випадкове число (я викинув його за допомогою кубиків)
      }
    
  

8.2 Оператор switch

Оператор switch використовується для виконання одного з декількох шматків коду в залежності від значення виразу. Він особливо корисний, коли необхідно порівняти одне значення з кількома можливими варіантами.

Синтаксис:

    
      switch(expression) {
        case value1:
          // код, який виконається, якщо expression === value1
          break;
        case value2:
          // код, який виконається, якщо expression === value2
          break;
        // ...
        default:
          // код, який виконається, якщо жодне зі значень не співпало
      }
    
  

Приклад:

JavaScript
    
      let day = 3;
      let dayName;

      switch (day) {
        case 1:
          dayName = "Понеділок";
          break;
        case 2:
          dayName = "Вівторок";
          break;
        case 3:
          dayName = "Середа";
          break;
        case 4:
          dayName = "Четвер";
          break;
        case 5:
          dayName = "П'ятниця";
          break;
        case 6:
          dayName = "Субота";
          break;
        case 7:
          dayName = "Неділя";
          break;
        default:
          dayName = "Невірний день";
      }

      console.log(dayName); // "Середа"
    
  

8.3 Оператор ??

Оператор ??, або nullish coalescing operator, використовується для призначення значення за замовчуванням, якщо лівий операнд є null або undefined. Це дозволяє уникнути застосування значення за замовчуванням для інших хибних значень, таких як 0, false, або порожній рядок ("").

Синтаксис:

    
      let result = value1 ?? value2;
    
  

Якщо value1 не null або undefined, result буде value1. В іншому випадку result буде value2.

Приклади:

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

      let bar = 0 ?? 'default';
      console.log(bar); // 0 (0 не є null або undefined)

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

Різниця з логічним АБО (||)

Оператор || також може використовуватися для завдання значення за замовчуванням, але він повертає правий операнд для будь-яких хибних значень, таких як 0, "", або NaN.

Приклад порівняння:

JavaScript
    
      let value = 0 || 'default';
      console.log(value); // 'default' (оскільки 0 - хибне значення)

      let value2 = 0 ?? 'default';
      console.log(value2); // 0 (оскільки 0 не є null або undefined)
    
  

Застосування

Оператор ?? корисний в ситуаціях, коли потрібно вказати значення за замовчуванням тільки для null або undefined, але зберегти хибні значення, такі як 0 або "".

Реальні приклади застосування

Приклад 1. Значення за замовчуванням у об'єктах конфігурації:

JavaScript
    
      function configure(settings) {
        settings = settings ?? {};
        let timeout = settings.timeout ?? 1000;
        let color = settings.color ?? 'blue';
        // решта логіки налаштування
      }
    
  

Приклад 2. Параметри за замовчуванням для функцій:

JavaScript
    
      function printMessage(message) {
        message = message ?? 'Повідомлення відсутнє';
        console.log(message);
      }

      printMessage(null); // 'Повідомлення відсутнє'
      printMessage('Привіт'); // 'Привіт'
    
  

Використання оператора ?? дозволяє писати чистіший і передбачуваний код, особливо в ситуаціях, коли важливо враховувати тільки відсутність значення (null або undefined).

1
Опитування
Куки, WebStorage і Web API, рівень 46, лекція 3
Недоступний
Куки, WebStorage і Web API
Куки, WebStorage і Web API
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ