CodeGym /Kurslar /Frontend SELF AZ /Maraqlı əlavələr

Maraqlı əlavələr

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

8.1 Psevdotəsadüfi ədədlər

Bəzən proqramçı, sadə görünən məsələlərlə üzləşir: «axşam baxmaq üçün müəyyən bir siyahıdan təsadüfi bir film seçmək», «lotereya qalibini seçmək», «smartfonu silkələdikdə mahnı siyahısını qarışdırmaq», «mesajın şifrələnməsi üçün təsadüfi rəqəm seçmək». Və hər dəfə belə sual yaranır: təsadüfi ədədi necə əldə etmək olar?

Əslində, əgər sizə «həqiqi təsadüfi ədəd» lazımdırsa, bunu əldə etmək çox çətindir. Hətta bəzi hallarda kompyuterə xüsusi riyazi koprosessorlar quraşdırılır ki, tələblərə uyğun olaraq belə ədədləri yarada bilsinlər.

Buna görə proqramçılar öz həllini tapıblar — psevdotəsadüfi ədədlər. Psevdotəsadüfi ədədlər — elə bir ardıcıllıqdır ki, onun ədədləri ilk baxışdan təsadüfi görünür, amma mütəxəssis dəqiq analiz etdikdə müəyyən qanunauyğunluqları görə bilər. Gizli sənədlərin şifrələnməsi üçün belə ədədlər uyğun deyil, amma oyunda zərin atılmasını simulyasiya etmək üçün tam uyğundur.

Psevdotəsadüfi ədədlərin ardıcıllığı yaratmaq üçün bir çox alqoritm var və onların əksəriyyəti növbəti təsadüfi ədədi əvvəlki rəqəm və bəzi köməkçi ədədlər əsasında yaradır.

Məsələn, bu proqram ekrana 1000 unikal ədəd çıxaracaq:

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

Yeri gəlmişkən, biz psevdotəsadüfi ədədlərdən yox, belə ədədlərin ardıcıllığından bəhs edirik. Çünki tək bir ədədə baxaraq, onun təsadüfi olub olmadığını anlamaq mümkün deyil.

Təsadüfi rəqəmi müxtəlif yollarla əldə etmək mümkündür:

JavaScript
    
      function getNextRandom() {
        return 4; # bu tam təsadüfi rəqəmdir (mən onu zər atmaqla aldım)
      }
    
  

8.2 switch operatoru

switch operatoru ifadənin dəyərinə əsasən bir neçə kod blokundan birini yerinə yetirmək üçün istifadə olunur. Xüsusilə bir dəyəri bir neçə mümkün variantla müqayisə etmək lazım olduqda faydalıdır.

Sintaksis:

    
      switch(expression) {
        case value1:
          // expression === value1 olduğu halda yerinə yetiriləcək kod
          break;
        case value2:
          // expression === value2 olduğu halda yerinə yetiriləcək kod
          break;
        // ...
        default:
          // heç bir dəyər uyğun gəlmədikdə yerinə yetiriləcək kod
      }
    
  

Nümunə:

JavaScript
    
      let day = 3;
      let dayName;

      switch (day) {
        case 1:
          dayName = "Bazar ertəsi";
          break;
        case 2:
          dayName = "Çərşənbə axşamı";
          break;
        case 3:
          dayName = "Çərşənbə";
          break;
        case 4:
          dayName = "Cümə axşamı";
          break;
        case 5:
          dayName = "Cümə";
          break;
        case 6:
          dayName = "Şənbə";
          break;
        case 7:
          dayName = "Bazar";
          break;
        default:
          dayName = "Yanlış gün";
      }

      console.log(dayName); // "Çərşənbə"
    
  

8.3 ?? Operatoru

?? operatoru, ya da nullish coalescing operator, sol operand null və ya undefined olduqda standart dəyər təyin etmək üçün istifadə olunur. Bu, standart dəyərin digər yalan dəyərlərə, məsələn, 0, false və ya boş sətir ("") üçün tətbiq edilməsindən qaçmağa kömək edir.

Sintaksis:

    
      let result = value1 ?? value2;
    
  

Əgər value1 null və ya undefined deyilsə, result value1 olacaq. Əks halda, result value2 olacaq.

Nümunələr:

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

      let bar = 0 ?? 'standart';
      console.log(bar); // 0 (0 null və ya undefined deyil)

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

Logical OR (||) operatorundan fərqi

|| operatoru da standart dəyər təyin etmək üçün istifadə oluna bilər, amma bu operator hər hansısa yalan dəyər üçün sağ operandı qaytarır, məsələn, 0, "", və ya NaN.

Müqayisə nümunəsi:

JavaScript
    
      let value = 0 || 'standart';
      console.log(value); // 'standart' (çünki 0 yalan dəyərdir)

      let value2 = 0 ?? 'standart';
      console.log(value2); // 0 (çünki 0 null və ya undefined deyil)
    
  

İstifadə

?? operatoru, yalnız null və ya undefined üçün standart dəyər təyin etmək lazım olan, amma digər yalan dəyərləri, məsələn, 0 və ya "", saxlamalı olan vəziyyətlərdə faydalıdır.

Həqiqi istifadəyə nümunələr

Nümunə 1. Konfiqurasiya obyektlərində standart dəyərlər:

JavaScript
    
      function configure(settings) {
        settings = settings ?? {};
        let timeout = settings.timeout ?? 1000;
        let color = settings.color ?? 'mavi';
        // konfiqurasiya loqikasının davamı
      }
    
  

Nümunə 2. Funksiyalar üçün standart parametrlər:

JavaScript
    
      function printMessage(message) {
        message = message ?? 'Mesaj yoxdur';
        console.log(message);
      }

      printMessage(null); // 'Mesaj yoxdur'
      printMessage('Salam'); // 'Salam'
    
  

?? operatorunun istifadəsi, xüsusilə yalnız dəyərin olmamasını (null və ya undefined) nəzərə almaq lazım olan vəziyyətlərdə, daha təmiz və proqnozlaşdırıla bilən kod yazmağa imkan verir.

1
Опрос
Cookies, WebStorage və Web API,  46 уровень,  3 лекция
недоступен
Cookies, WebStorage və Web API
Cookies, WebStorage və Web API
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION