con la unica intencion de ayudarte a tenerlo funcionando, es decir, no mejorando el codigo para que sea optimo:
- lo primero es que cuando uno de los opeandos del operador + es un string, los operandos se concatenan. es decir, se unen en lugar de sumarse. de modo que charAt devuelve un string y este lo tienes que convertir a integer. puedes usar la funcion Number o parseInt, el que guste.
- y lo otro es que el condicional del bucle esta contando una posicion de mas. es decir, si la cadena contiene cuatro caracteres, cuenta de 0 a 4 para un total de 5 posiciones. el error esta en la comparacion.