działa następujący kod w nodejs cli:javascript (nodejs), podczas gdy pętla bug
var my_function = function() {
var next_value = 1
, value = undefined
, difference = undefined
, prev_difference = undefined
while ((typeof prev_difference === 'undefined') || (prev_difference > 0)) {
value = next_value
next_value = 2
difference = next_value - value
if (difference > prev_difference) {
throw new Error('Diminishing')
}
prev_difference = 0
}
return next_value
}
for (var i = 0; i< 300; i++) { console.log(i); console.log(my_function()) }
Na 282 iteracji pętli zaczynam coraz wartość '1' zamiast '2'. Nie mogę dla życia zrozumieć dlaczego. Ten fragment kodu jest redukcją z czegoś, nad czym pracowałem, stąd pozornie niepotrzebna instrukcja w pętli. Istnieje kilka sposobów na zmianę tego kodu, tak aby ścieżka wykonania nie została zepsuta, ale chciałbym zrozumieć, dlaczego jest ona zerwana z obecną konfiguracją.
Ponadto, jeśli masz jakieś wskazówki dotyczące narzędzi, które mogłyby mi pomóc w debugowaniu czegoś takiego w przyszłości, byłbym bardzo wdzięczny. W większości przypadków użyłem console.log, aby to zawęzić.
wersja node.js v0.8.6. Działa w systemie Mac OSX w wersji 10.7.5. Dzięki
Wydaje mi się, że to błąd węzła; zachowanie jest naprawdę dziwne. (Mogę to również powielić.) * Edit * Przypuszczam, że może to być błąd V8, a nie błąd węzła ... – Pointy
Trippy. Zdarza się też dla mnie. – meetamit
Nie uważasz, że to V8, ponieważ Chrome nie ma tego samego problemu ...? –