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.

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!
Powiązane artykuły
- Co to jest runtime?
- compose vs pipe
- Dobre praktyki w JavaScript: $ (dolar) w nazwie zmiennej
- Pytanie rekrutacyjne nr 2: Jak optymalizowałbyś zasoby strony internetowej? — JavaScript Developer
- Angular: Krótka historia o tym, jak złamałem system
- Jak zbudować licznik czasu?
- Jak zbudować widget prezentujący testimoniale?
- Angular: Jak zamockować dane do usługi HTTP?
- Jak wyświetlić liczbę osób lajkujących nasz fanpage?
- DeviceLightEvent w ogóle i w szczególe
- Jak przerobić stronę na Progressive Web App?
- Narzędzia Świata: webpack-unused
- Dziedziczenie obiektów w JavaScript (bez użycia klas)
- "JavaScript" to nie to samo co "Java"
- Historia języka JavaScript
- Popularny błąd w obsłudze zdarzeń w JavaScript
- Moja przygoda z monadami w JavaScript
- XMLHttpRequest, czyli natywny AJAX
- Narzędzia Świata: super-event-emitter.js
- Historia loga języka JavaScript
- ECMAScript 6. Dlaczego warto spróbować już dziś?
- Narzędzia Świata: pokemon-picker
- Backbone.js: problem z unikalnymi właściwościami obiektowymi
- Narzędzia Świata: more.js
- eval() czy JSON.parse() - porównanie szybkości
- Uważaj na "use strict", czyli Strict mode w praktyce
- Funkcja to czy obiekt, któż to wie?
- Wykrywanie wersji interpretera JavaScript
- bind() obok call() i apply() jako piękna natura języka
- ECMAScript 5 — kiedy będzie codziennością?
- CoffeeScript + Windows
- Dodawanie metody do obiektu Function poprzez "addMethod"
- Własna biblioteka cross-platform w JavaScript
- Node vs Element