Introducción
En el post JS: Introducción a la programación, se hace una distinción entre la Programación y las herramientas que esta aporta para la realización de los distintos programas y los Lenguajes de Programación.
Un Lenguaje de Programación debe permitir que usemos las herramientas de Programación. En esta oportunidad vamos a ver cómo hace JavaScript para permitirnos trabajar con los operadores.
Tipos de operadores
Los operadores son elementos que nos permiten interactuar con los datos contenidos en nuestro programa. Los datos habitualmente se encuentran almacenados en variables (aunque no es necesario que así sea para trabajar con algunos operadores) por lo que es común hablar de ellos como operadores de variables.
En JavaScript existen cuatro tipos de operadores:
- Operadores Matemáticos (+, —, *, /, %)
- Operadores de Asignación (=, +=, -=, *=, /=)
- Operadores de Incremento y Decremento (++, --)
- Operadores Lógicos (&&, || ,!)
En este post hablaremos sobre los tres primeros (matemáticos, asignación e incremento y decremento). Mientras que en el post JS: Operadores de Variables II nos ocuparemos de los operadores lógicos.
Operadores Matemáticos
Los Operadores Matemáticos, como su nombre lo indica, permiten realizar cálculos matemáticos.
![]() |
Tabla de Operadores Matemáticos |
Es importante notar que en JavaScript, el operador suma tiene una doble función. Por un lado, permite sumar datos de tipo number. Y por el otro, concatenar datos de tipo string.
La concatenación de datos implica crear un valor único juntando todos los valores concatenados. Imaginemos lo siguiente, tenemos dos datos de tipo string: "Hola, " y "Mundo!". Si “sumamos” (concatenar) los valores Hola, y Mundo!, obtendremos un único dato de tipo string con el siguiente valor "Hola, Mundo!".
Casteo de tipo de dato
Al momento operar sobre datos de distinto tipo (se encuentren dentro de variables o no) vamos a tener problemas porque «No es posible operar sobre datos de distinto tipo».
Hay Lenguajes que, si intentamos hacer una suma con una variable de tipo string y una de tipo number generan un error y dejan de ejecutar el programa. JavaScript tiene otro enfoque.
Cada vez que intentemos operar sobre datos de distinto tipo, JavaScript va a realizar una conversión de dato. Es decir, va a elegir un tipo de dato y se va a asegurar que las dos variables sean de ese tipo. Después hará la operación solicitada.
Analicemos los siguientes ejemplos
¿Qué está sucediendo?Arranquemos por el primer caso. La variable num contiene un dato de tipo number, por tanto, es una variable de tipo number. La variable frase contiene un dato de tipo string convirtiéndose, entonces, en una variable de tipo string. Con console.log(frase + num) le estamos pidiendo a JavaScript que ejecute una operación relacionada con el operador suma y nos muestre el resultado de dicha operación en la consola del navegador. Como dijimos más arriba, «No es posible operar sobre datos de distinto tipo». En este punto, otros Lenguajes nos dejarían saber que dicha acción no es posible debido a esta premisa. JavaScript, en cambio, convierte a la variable num en una variable de tipo string para, después, mostrar el resultado de concatenar (operación que se realiza cuando “sumamos” datos de tipo string) los dos datos. Es decir que, console.log(frase + num) para JavaScript equivale a console.log("En la variable num, se almacena el valor: " + "4").
En el segundo caso, nos encontramos con el mismo problema. Estamos queriendo operar sobre distintos tipos de datos. En consecuencia, JavaScript convierte uno de esos datos y opera de forma acorde. Acá también la variable de tipo number es convertida a variable de tipo string. Por tanto, console.log(n1 + n2), JavaScript lo opera como console.log("1" + "2"). Nuevamente, el operador más implica la concatenación de datos de tipo string.
Esta particularidad, conocida como casteo implícito, se da todas y cada una de las veces en que intentemos operar con variables de distinto tipo. Es importante, por tanto, conocer cómo hace JavaScript este casteo.
A continuación te muestro cómo se genera la conversión cuando operamos sobre datos de tipo number y string utilizando los Operadores Matemáticos.
- string + number ⇒ string
- string (—, *, /, %) number ⇒ number
El casteo y coerción de datos en JavaScript es un tema más complejo que trataremos en posteos futuros.
Por último, cuando se hace un casteo de dato de tipo string a dato de tipo number sobre un valor que no puede ser representado de forma numérica, obtendremos un dato de tipo number con el valor NaN (Not a Number) para indicar que, aunque se cambió el tipo de dato, no se pudo obtener un número.
Como ya dijimos, el casteo implícito es algo que va a suceder siempre que trabajemos con variables de distinto tipo, pero podríamos evitarlo haciendo uso de los paréntesis.
Por ejemplo:
Tené presente que si querés hacer una multiplicación y una división, igual que en matemáticas, los paréntesis no son necesarios porque siempre se realizan primero esas operaciones y después las sumas y restas.
Redes