Tipos básicos de datos

<< Funciones Colecciones de datos >>

Number

En JS no hay diferencia entre números enteros y decimales. El tipo de dato para cualquier número es number. Además, puedes representar números en notación exponencial.

Los números son objetos

En JavaScript todo es un objeto, incluso los valores primitivos, cosa que no ocurre en otros lenguajes (Java, C++, etc.). Esto se puede comprobar si ponemos un punto después de escribir un número, lo que nos permite acceder a algunos métodos o propiedades

Existe también un objeto global del lenguage llamado Number, desde el cual podemos acceder a propiedades y métodos bastante útiles.

Hay también valores especiales para los números fuera de rango (Infinito y -Infinito). Para saber si un número es finito o no, podemos comparar con el valor Infinity, o -Infinity. También existe una función llamada isFinite(value) que nos devuelve falso cuando el valor es Infinity o -Infinity.

Boolean

En JavaScript, los valores booleanos se representan con true, false. Es un valor binario, es decir, solo puede tomar uno de esos 2 valores.

String

Los valores string son cadenas de texto que se representan generalmente entre ‘comillas simples’ o "comillas dobles". Se puede usar el operador + para concatenar cadenas.

Cuando el string se encuentra dentro de comillas dobles, podemos usar comillas simples dentro y viceversa. Sin embargo, si quieres poner comillas dobles dentro de una cadena declarada dentro de comillas dobles, necesitas escaparlas (\") para no cerrar dicha cadena. Lo mismo ocurre al combinar comillas simples.

Template literals

Desde ES2015, JavaScript soporta string multilínea con sustitución de variables. Ponemos el string entre caracteres `` (backquote) en lugar de comillas simples o dobles.

Los saltos de línea o espacios, tabulados, etc, se imprimen tal cual se representan en la cadena (sin la necesidad de caracteres especiales como \n o \t). Cualquier variable (o cualquier expresión que devuelva un valor) iría dentro de ${} si se quiere sustituir por su valor.

Operaciones con strings

Como en el caso de los números, los strings son objetos y tienen algunos métodos útiles que podemos utilizar. Todos estos métodos no modifican el valor de la variable original a menos que la reasignes.

Operadores

Suma y concatenación (+)

Este operador puede usarse para sumar números o concatenar cadenas. Pero, ¿Qué ocurre si intentamos sumar un número con un string, o algo que no sea un número o string?. Vamos a ver qué pasa:

Cuando un operando es string, siempre se realizará una concatenación, por tanto se intentará transformar el otro valor en un string (si no lo es). En caso contrario, intentará hacer una suma (convirtiendo valores no númericos a número). Si la conversión del valor a número falla, devolverá NaN (Not a Number).

Para comprobar si un número es NaN, se puede utilizar el método Number.isNaN(valor), que devuelve un booleano (true si es NaN, es decir, alguno de los operandos no ha podido ser convertido a número).

Operadores aritméticos

Otros operadores aritméticos son: resta (-), multiplicación (*), división (/), y resto (%),. Estos operadores operan siempre con números, por tanto, cada operando debe ser convertido a número (si no lo era previamente).

Operadores unarios

En JavaScript tenemos los operadores de preincremento (++variable), postincremento (variable++), predecremento (--variable) y postdecremento (variable--).

Operadores relacionales

El operador de comparación, compara dos valores y devuelve un booleano (true o false) Estos operadores son prácticamente los mismos que en la mayoría de lenguajes de programación, a excepción de algunos, que veremos a continuación.

Podemos usar == o === para comparar la igualdad (o lo contrario !=, !==). La principal diferencia es que el primero (==), no tiene en cuenta los tipos de datos que están siendo comparados, compara si los valores son equivalentes. Internamente convierte uno de los valores al tipo del otro para compararlos.

Cuando usamos === (o !==), los valores además deben ser del mismo tipo. Si el tipo de valor es diferente (o si es el mismo tipo de dato pero diferente valor) devolverá falso. Devuelve true cuando ambos valores son idénticos.

Debido a esta característica del lenguaje, podemos simplemente evaluar cualquier valor en una condición. JavaScript obtendrá su equivalente booleano (true o false) y evaluará dicha condición en base a ello.

Otros operadores relacionales para números o strings son: menor que (<), mayor que (>), menor o igual que (<=), y mayor o igual que (>=). Cuando comparamos un string con estos operadores, se va comparando carácter a carácter y se compara su posición en la codificación Unicode para determinar si es menor (situado antes) o mayor (situado después). A diferencia del operador de suma (+), cuando uno de los dos operandos es un número, el otro será transformado en número para comparar. Para poder comparar como string, ambos operandos deben ser string.

Operadores booleanos

Los operadores booleanos son negación (!), y (&&), o (||). Estos operadores normalmente se usan en combinación con los operadores relacionales formando una condición más compleja. El resultado final siempre es true o false.

Se puede usar el operador &&, o el operador ||, con valores que no son booleanos. La expresión devolverá uno de los 2 valores. El operador || devuelve el primer valor si este equivale a true, o el segundo en caso contrario. El operador && hará lo opuesto (devolverá el segundo valor solo si el primero es cierto).

Conversión entre tipos de datos

Conversión a string

Puedes convertir un dato a string usando la función global String(value). Otra opción es concatenarlo con una cadena vacía, de forma que se fuerce la conversión en caso de no ser un string.

Conversión a number

Puedes convertir un dato en number usando la función global Number(value). También puedes añadir el signo ‘+’ antes de la variable para forzar la conversión, ya que el signo solo se puede aplicar a un número.

Conversión a boolean

La conversión de un dato a booleano se realiza usando la función Boolean(value). Puedes añadir !! (doble negación), antes del valor para forzar la conversión ya que ese operador solo funciona con booleanos. Primero convierte y luego niega dicho valor, por ello debemos usar otra negación para obtener el valor real. Estos valores equivalen a false: string vacío (""), null, undefined, y 0. Cualquier otro valor debería devolver true.

<< Funciones Colecciones de datos >>