parseFloat
и parseInt
может вернуть NaN
, если первый символ строки не может быть преобразован в число.
Итак, я бы защитился от этого следующим образом (NaN
это ложное значение ):
price = parseFloat(price) || 0;
qty = parseInt(qty, 10) || 0;
Арифметические операции над числами со значением NaN
почти всегда приводят к NaN
(NaN + 5
приведет к NaN
.) Это означает, что если только один входных данных не может быть проанализирован на parseFloat
или parseInt
ваш текущий код будет в итоге вычислять NaN
для промежуточного итога.
Это уже упоминалось в комментариях (в основном Феликс ), но я думаю, что стоит подчеркнуть, поскольку это важные вопросы:
- Всегда передавать аргумент
radix
в функцию parseInt
;
- Не используйте
class
для имен переменных: это зарезервированное (не используется, но зарезервированное) ключевое слово;
- Не ожидайте, что промежуточный итог будет идеально точным , если вы не сделаете свои расчеты в центах.