5
respuestas

El texto entre comillas se interpreta como número?

Copie el código del problema para mi sorpresa JavaScript si me interpreto (10 + "20" + 12) / 3 pero no de la manera que esperaba ya que concateno los números y formo un numero que no era el que se buscaba la respuesta se simplifico en (102012 / 3) y esto es tiraba de resultado 34004 por lo que mi conclusión es que no nos indica un error como tal siempre va a leer la línea de código y la asociara con un número sin embargo no con la lógica que lo esperábamos ya que concateno los números y no los sumo por el hecho de que uno de ellos estaba en texto por lo que el resultado no es el esperado el cual de quitar las comillas en el numero 20 hubiera sido 14.

5 respuestas

Me paso lo mismo, pero entonces como podríamos detectar ese error?, ya que en un proyecto grande no creo que podamos seguir cada dato que pudiéramos crear.

Esta solucion la dejare de esta manera para que ocupe menos ya que no fue util

Es curioso como se realiza la concatenacion pero si puede dar errores que si no les ponemos atención nos generarían un problema, me llama la atención el comentario del signo de +, estos en mi particular experiencia me han dado problema por olvidarlos.

Buenas tardes. Bueno... Yo entendí que al menos el 10 y el 12 de las variables EDAD1 y EDAD2 sí los dividió entre 3, pues de 34004 tienen sentido el 3 y el 4, que son los resultados de 10 dividido entre 3 y de 12 dividido entre 3. Ahora, lo que sí no me explico es el 004. La verdad no entiendo, y me quiebro la cabeza pensando que podría ser por el "20", pero al mismo tiempo esa variable declarada como texto debió haberse quedado en "20" texto, entonces no concuerda con mi sospecha. Según yo debió haber quedado 3420 o 3204, en todo caso. No le hallo razón de ser a ese 004 ni a el hecho de que "20" no aparezca impreso como texto en la concatenación. Me estoy volviendo loco. ¡Aiudaaaaa!

Acá esta ocurriendo lo siguiente Victor:

<meta charset="UTF-8">
<script>
    var EDAD1 = 10;
    var EDAD2 = "20";
    var EDAD3 = 12;
    document.write("La media de las edades es <br>");
    document.write( (EDAD1 + EDAD2 + EDAD3) / 3); 
    </script>
  1. Como EDAD2 es un string JavaScript lo que hace es una concatenación ( el + sirve para sumar números o concatenar string), convierte todo en cadena
  2. Primero hace el paréntesis (EDAD1 + EDAD2 + EDAD3) = "10"+"20"+"12" => concatenación "102012"
  3. Ahora al encontrar JavaScrip (/) una división es posible solo con números, JavaScript convierte la cadena en número
  4. El resultado es entonces 102012/3 = 31004

Hay que tener presente siempre que JavaScript es de tipado dinámico y se adapta según lo que pueda hacer, si no tenemos presente esto podemos incurrir en muchas fallas (por eso surgió TypeScript). Espero que esto aclare las dudas