y.....8
#javascript

do {
let a = +prompt('a?', '');
}
while (a>10);

Dlaczego jak podaję 11 to nie wykonuje się w kółko ta pętla? XDD....
1
  • Najlepsze
  • Wszystkie komentarze
hesus
bo "a" jest zdefiniowane wewnątrz pętli, a nie poza nią, zrób coś takiego
let a = prompt('a?', '');
do {
a = prompt('a?', '');
} while (a>10);
1
y.....8
@hesus: dziękuję,faktycznie.
0
Jednorybek
@hesus: ale jakby użył var to by działało?
0
hesus
@Jednorybek: tak, ponieważ mimo iż każda deklaracja (var/let/const) jest "hoistowana" (hoisting), o tyle var ma przypisany wtedy undefined, ale let/const będzie nadal niezainicjalizowany, zatem nie ma żadnej wartości. Idąc dalej - var wtedy należy do lexical scope poziom wyżej (zakładam, że tutaj już globalnego), a jakby to był let, to jego lexical scope ogranicza się do klamerek po "do", zatem while (a > 10) nie ma do niej dostępu
0