Вы уверены, что вы не сделали этого:
var a = '30';
var b = '40';
Здесь я показываю «30» в виде строки, а не числа, и я ожидал бы Оператор «+» объединяет две строки. Поскольку это надуманный код, вы не можете быть полностью уверены, где ваши переменные были первоначально назначены или какой тип они имеют. Вы можете проверить это следующим образом:
var a = '30';
var b = '40';
alert(typeof(a) + '\n' + typeof(b));
Если какой-либо из тех, кто говорит, «объект» или «строка», а не «число» это ваша проблема. Один из способов, который может случиться, что вы не ожидали, - это вход. Скажем, у вас есть такой код:
<input id="a" value="30" />
<input id="b" value="40" />
<script language="javascript">
var a = document.getElementById('a').value;
var b = document.getElementById('b').value;
</script>
Здесь значение ввода текста всегда является строкой.
Если вы хотите, чтобы преобразовать переменную в число первых, вы должны использовать что-то вроде myVar - 0
к принуждать числовой операции или более-формальных parseInt()
или parseFloat()
функции (не забудьте параметр базисное для parseInt()
). И всегда проверяйте результаты isNaN()
.
Я поражен тем, как кто-то остановил этот вопрос. Это было из-за ошибки в коде? Удивительно ... – Victor
Измените свой код и переименуйте переменную '' new'. Виктор прав, код, как пример, должен быть функциональным и не вводить новые ошибки. – Boldewyn
Поскольку проблема, с которой он сталкивается, не может быть результатом этого кода, даже если «новый» исправлен. –