Вы случайно повторно объявляете count
:
var count = count + value;
должно быть:
count = count + value;
Количество, объявленное в самой внутренней области (то есть calculate
) скроет другую (это называется «затенением» переменных).
Причина, по которой вы получаете «undefined9», заключается в том, что значение по умолчанию для вновь объявленной переменной count
равно undefined
;когда вы добавляете к нему, он видит значение undefined
слева и число справа и решает, что объединение строк - лучший способ выполнить сложение, в результате чего получается строка «undefined9».
Он должен угадать ваше предполагаемое значение, поскольку +
перегружен, чтобы означать как числовое сложение, так и конкатенацию строк;в этом случае он угадывает неправильно.