Me encontré que en algunos casos cuando quiero sumar un valor numérico a una variable en lugar de realizar dicha operación matemática concatena ambos valores como si fueran un string.
Esto no ocurre si ambos valores son enteros puros. El problema se da por ejemplo si alguno de los valores de la suma están almacenados en un array.
Por ejemplo:
var values = "2 4 6 8";
var splitValues = values.split(" ");
var y = 10;
y += splitValues[2];
alert(y);
Este ejemplo devolverá el valor “106″ en lugar del esperado: 16.
Para solucionar este comportamiento no deseado tenemos que indicarle a JavaScript que interprete dicho valor como número y no como cadena. Para eso podemos utilizar la función parseInt :
var values = "2 4 6 8";
var splitValues = values.split(" ");
var y = 10;
y += parseInt(splitValues[2]);
alert(y);
De esta forma le decimos a JavaScript que interprete splitValues[2] como un entero y obtenemos el resultado esperado: 16.
También podemos utilizar parseFloat si queremos que JS interprete un string como decimal en lugar de entero.
Para mas info: http://www.w3schools.com/jsref/jsref_parseInt.asp