Obecnie biorę podstawowy kurs JS na Codeacaademy i testuję za pomocą scenariusza pętli podczas pętli.
Kiedy spróbowałem tego (patrz kod poniżej), moja karta przeglądarki uległa awarii.
Zakładam, że to dlatego, że stworzyłem nieskończoną pętlę.

Czy ktoś może zestawiać problem?

var timeIs = 0

var addTime_1 = function(time){
    var newTime = time + 1;
    return newTime;
}

var addTimes = function(times){
    while (times<10){
        addTime_1(times)
    }
}


addTimes(timeIs)
1
Alex Boyle 28 czerwiec 2017, 09:04

3 odpowiedzi

Najlepsza odpowiedź

Musisz zrozumieć koncepcję zmiennej scoping . Oraz cel słowa kluczowego return

newTime jest całkowicie nową zmienną, a {x1}} nie jest aktualizowany, chyba że wyraźnie powiesz.

times = addTime_1(times);
0
OneCricketeer 28 czerwiec 2017, 06:09

Możesz także rozważyć za pomocą pętli dla () w miejscu podczas () pod warunkiem, że wiesz, ile razy chcesz uruchomić swoją pętlę (w tym przykładzie 10 razy). W ten sposób możesz mieć trochę więcej kontroli nad pętlą, ponieważ wybierzesz, jak pojawi się sama pętla.

0
KwMarkHintz 1 lipiec 2017, 18:03

addTime_1 nie zmienia wartości times. Właśnie zwraca wartość, którą nazywa się +1.

Od times nigdy nie jest ustawiony na nic nowego, pozostanie 0 przez cały czas.

A ponieważ 0 jest mniej niż 10 cały czas, mamy nieskończoną pętlę.

Edytować: Podobnie jak inni, powiedzieli, co jest przeznaczone, jest najbardziej prawdopodobnym ustawieniem times do wartości zwracanej z addTime_1, I.e. times = addTime_1(times)

0
Gunnar Tångring 28 czerwiec 2017, 06:09