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.dev będą publikowane pytania które zadawałem podczas spotkań rekrutacyjnych na stanowisko programisty #JavaScript.
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
-
Pętla
for
for (let i = 10; i >= 0; i--) { console.log(i); }
-
Pętla
while
let i = 11; while (i--) { console.log(i); }
-
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!
-
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ócizero
jako, że zmiennaa
po ostatnim wywołaniu tej pętli uzyska taką wartość, kończąc tym samym wykonywanie się pętli (za sprawą warunkua > 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. -
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!