• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JavaScript warunki

VPS Starter Arubacloud
0 głosów
228 wizyt
pytanie zadane 19 listopada 2018 w JavaScript przez ptaku19 Użytkownik (800 p.)

Witam, mam prosty, ale dziwny błąd, nad którym się głowie. Pytanie brzmi dlaczego to nie działa? Jak gdyby if blokował funkcje. Zademonstruje na przykładzie:



var x =0

function rosnij(){
  x++
  if(x > 50){
    flaga = true
  }
}
setInterval(rosnij,1000/60)


flaga = false;

cos = function(){
  if(flaga == true){
    console.log('sss')

   }
}
cos();

 

3 odpowiedzi

0 głosów
odpowiedź 19 listopada 2018 przez sefir Dyskutant (8,560 p.)
wybrane 20 listopada 2018 przez ScriptyChris
 
Najlepsza
Funkcja cos wykona się tylko raz i to zaraz po uruchomieniu kiedy flaga = false dlatego nic Ci nie zwróci
komentarz 19 listopada 2018 przez ptaku19 Użytkownik (800 p.)
Sorka zapomniałem dopisać setTimeout w funkcji cos. Btw witam ponownie :P
komentarz 19 listopada 2018 przez ptaku19 Użytkownik (800 p.)

Chodziło mi dlaczego to nie działa?

var x =0
 
function rosnij(){
  x++
  if(x > 50){
    flaga = true
  }
}
setInterval(rosnij,1000/60)
 
 
flaga = false;
 
cos = function(){
  if(flaga == true){
setTimeout(cos,3000)
    console.log('sss')
 
   }
}
cos();

 

komentarz 19 listopada 2018 przez adrian17 Ekspert (344,100 p.)
`flaga` jest false, więc setTimeout się nie wykonuje.
komentarz 19 listopada 2018 przez ptaku19 Użytkownik (800 p.)
A dobra już wiem co źle zrobiłem. Olsnilo mnie :D po prostu dac setTimeout przed ifem :P
komentarz 19 listopada 2018 przez sefir Dyskutant (8,560 p.)
Późna pora robi swoje :D
komentarz 19 listopada 2018 przez ptaku19 Użytkownik (800 p.)
Dzięki za pomoc wszystkim. Lecę spać bo cienko to widze :)
0 głosów
odpowiedź 19 listopada 2018 przez adrian17 Ekspert (344,100 p.)
Um...

Tworzysz funkcję, która co ułamek sekundy zmienia `x` i potencjalnie ustawia `flaga`. (btw, fajnie gdyby `flaga` też było ładnie zadeklarowaną zmienną na górze).

Tworzysz funkcję `cos` i od razu ją wywołujesz. W momencie jej wywołania `flaga` jest `false`, więc console.log się nie wykonuje.
0 głosów
odpowiedź 20 listopada 2018 przez sebeks Mądrala (5,300 p.)
Zamiast var użyj let i poczytaj sobie o zmiennych. Używaj operatora porównania === zamiast ==

Jeśli przypiszesz setInterval do zmiennej to możesz go wyłączyć/anulować za pomocą clearInterval(zmienna). Poczytaj sobie o tym na MDN.

Podobne pytania

+1 głos
1 odpowiedź 239 wizyt
pytanie zadane 27 lipca 2021 w JavaScript przez Kytrap Początkujący (390 p.)
0 głosów
0 odpowiedzi 241 wizyt
0 głosów
2 odpowiedzi 222 wizyt
pytanie zadane 6 stycznia 2019 w JavaScript przez 42savage Bywalec (2,630 p.)

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...