запускает следующий код в nodejs cli:
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()) }
На итерации 282 цикла я начинаю получать значение '1' вместо '2'. Я не могу понять, почему. Этот фрагмент кода является сокращением от чего-то другого, над которым я работал, следовательно, казалось бы, ненужного оператора if в цикле. Есть несколько способов изменить этот код, чтобы путь выполнения не зависел, но я хотел бы понять, почему он ломается с текущей настройкой.
Кроме того, если у вас есть советы по инструментам, которые могли бы помочь мне в отладке чего-то подобного в будущем, я был бы очень благодарен. По большей части я использовал console.log, чтобы сузить это.
node.js версия v0.8.6. Работает на Mac OSX версии 10.7.5. Благодаря