Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: GustavoIP en 14 de Mayo 2021, 19:48

Título: Javascript ==> El signo "+" suma o concatena resultado extraño con operador suma
Publicado por: GustavoIP en 14 de Mayo 2021, 19:48
Buenas tardes estoy aprendiendo Javascript con el manual de "aprenderaprogramar.com" y estoy realizando un ejercicio que captura dos números con la función "prompt" y muestra con tres "alert" respuestas distintas.
Para el ejemplo ingremos los números 10 y 20.

El primer "alert" muestra el resto o residuo de dividir el primer número entre 5.
Como el primer número es 10, el "alert" me muestra 0 como resultado de "10%5"

El segundo "alert" muestra la división de ambos números.
Se muestra 0.5 como resultado de la división de 10 / 20.

El tercer "alert" muestra la suma de ambos números.

Pero en este caso se muestra 1020, está concatenando los valores de las variables en vez de sumarlas.

Me parece que la operación "suma" es la excepción de las operaciones y concatena las variables "String", no hay otra explicación creo yo....

Adjunto código
Código: [Seleccionar]
// funcion mostrar ensaje 1
    function mostrarMensaje1() {
         var num1 = prompt("Ingrese el primer número: "),
             num2 = prompt("Ingrese el segundo número: ");
         alert(num1 % 5);
         alert(num1 / num2);
         alert(num1 + num2);
    }
// fin funcion mostrar mensaje 1

Título: Re: Javascript ==> El signo "+" suma o concatena
Publicado por: Kabuto en 14 de Mayo 2021, 23:08
Sí.
Puedes parsear a entero para que el operador de suma trate los valores como números y no como cadenas String

Código: [Seleccionar]
alert(parseInt(num1) + parseInt(num2));
Título: Re: Javascript ==> El signo "+" suma o concatena
Publicado por: GustavoIP en 14 de Mayo 2021, 23:52
A ok, voy a intentar con "parseInt", muchas gracias por el dato.
Título: Re: Javascript ==> El signo "+" suma o concatena
Publicado por: GustavoIP en 15 de Mayo 2021, 08:40
Sí.
Puedes parsear a entero para que el operador de suma trate los valores como números y no como cadenas String

Código: [Seleccionar]
alert(parseInt(num1) + parseInt(num2));

A ok, voy a intentar con "parseInt", pero por ahí veo que con "Number()" tambien se puede, igual muchas gracias por el dato, voy a probar los dos.

Código: [Seleccionar]
alert(Number(num1)+Number(num2));
Título: Re: Javascript ==> El signo "+" suma o concatena
Publicado por: Kabuto en 15 de Mayo 2021, 12:13
Number() también sirve igual en este caso.
Aunque en otros casos más especiales, parseInt() y Number() tendrán comportamientos diferentes.

En este artículo (https://thisthat.dev/number-constructor-vs-parse-int/#:~:text=Number()%20converts%20the%20type%20whereas%20parseInt%20parses%20the%20value%20of%20input.&text=As%20you%20see%2C%20parseInt%20will,parseInt%20accepts%20two%20parameters.) (en inglés) lo explican muy bien, con ejemplos muy claros.
Guárdalo porque puede servirte para futuras referencias.
Título: Re: Javascript ==> El signo "+" suma o concatena
Publicado por: GustavoIP en 17 de Mayo 2021, 18:40
Number() también sirve igual en este caso.
Aunque en otros casos más especiales, parseInt() y Number() tendrán comportamientos diferentes.

En este artículo (https://thisthat.dev/number-constructor-vs-parse-int/#:~:text=Number()%20converts%20the%20type%20whereas%20parseInt%20parses%20the%20value%20of%20input.&text=As%20you%20see%2C%20parseInt%20will,parseInt%20accepts%20two%20parameters.) (en inglés) lo explican muy bien, con ejemplos muy claros.
Guárdalo porque puede servirte para futuras referencias.

Exacto, debe haber alguna diferencia entre ellos, como por ejemplo, en que ocasión se puede usar uno u otro.
Gracias por tu aporte (link), muy interesante.