:sparkles: PWA :sparkles:
Twarz autora bloga

Piotr Kowalski

Organizator WarsawJS Trener YouTuber

Pytanie rekrutacyjne nr. 1: Stwórz pętle, która będzie wyświetlała liczby od 10 do 0 — JavaScript Developer


Z okazji końca roku, przygotowałem dla Was pewną rywalizację, a bardziej miejsce na sprawdzenie swoich umiejętności. W grudniu, codziennie na profilu piecioshka.trener będą publikowane pytania które zadawałem podczas spotkań rekrutacyjnych na stanowisko programisty #JavaScript.

Baner reklamujący artykuł

Pierwsze pytanie!

A raczej zadanie. Jestem zwolennikiem dawania prostych zadań na spotkaniach rekrutacyjnych. Wiem, że nie sprawdzę całej wiedzy kandydata, aczkolwiek zadanie prostego zadania rekrutacyjnego da mi informację m.in o sposobie myślenia.

Zadanie brzmi: Stwórz pętle, która będzie wyświetlała liczby od 10 do 0

Zadanie powinno przetestować:

  • znajomość pętli
  • proces dekrementacji zmiennej

Moja rozwiązania

  1. Pętla for

     for (let i = 10; i >= 0; i--) {
         console.log(i);
     }
    
  2. Pętla while

     let i = 11;
     while (i--) {
         console.log(i);
     }
    
  3. Pętla forEach

     const limit = 11;
     Array.from({ length: limit }).fill(null).forEach((_, i) => {
         console.log(limit - i - 1);
     });
    

No dobra, wystarczy. Ostatnia realizacja była super nadmiarowa. Nie polecam jej używać jako odpowiedzi na pytanie zadane podczas spotkania rekrutacyjnego.

Rozwiązania społeczności

A teraz przedstawię Wam rozwiązania społeczności. Na wstępie chciałem, podziękować za wzięcie udziału w tej przygodzie i zachęcam do odpowiadania w komentarzach na kolejne pytania!

  • Kamil Kiełbasa:

      var a = 0b1010;
      while (a > 0) {
          console.log(a);
          a -= 0b0001;
      }
    

    Kiedy wkleimy ten kod do DevToolsów, to widzimy kolejno wyświetlone liczby od 10 do 0. Niestety, ale funkcja console.log, która jest w kodzie nie wyświetli zera. To dlaczego będzie ono widoczne?

    Otóż narzędzie developerskie zawsze wyświetlają wartość, która jest zwrócona przez ostanie wyrażenie. W tym przypadku wyrażenie while zwróci zero jako, że zmienna a po ostatnim wywołaniu tej pętli uzyska taką wartość, kończąc tym samym wykonywanie się pętli (za sprawą warunku a > 0).

    Przykład:

      let a = 1;
      while (a == 1) {
          console.log({ a });
          a++, 'qwe' // Comma operator
      }
    

    W tym przypadku wyświetlone zostanie:

      {a: 1}
      "qwe"
    

    Takie zachowanie można śmiało nazwać Side effectem. Dzięki Seba za zwrócenie na to uwagi.

  • Dominik Szczepaniak:

      function numbers(from, target) {
          for(let i = from; i >= target; --i) {
              console.log(i);
          }
      }
    
      numbers(10,0);
    

Ogłoszenie

Jutro kolejne rozwiązanie! A już dziś opublikowana została trzecia zagadka.

Zapraszam do udzielania odpowiedzi!