Вы уверены, что не сделали этого:
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()
на результатах.