# Tipos de datos en JavaScript


Las variables vienen en todas las formas y tamaños. Algunas son usadas para guardar números, otras texto y algunas para guardar **tipos de datos** mucho más complejos.

Hoy descubrirás 8 tipos de datos en JavaScript y sus principales características.

## String

Un String es una serie de caracteres usada para representar texto.

Los Strings se escriben con comillas simples o dobles.

```js
let text = 'valor'
```

## Number

Number puede almacenar cualquier número (entero y flotante) desde -9.007.199.254.740.991 hasta 9.007.199.254.740.991

```js
let numberValue = 10
```

## BigInt

En JavaScript el tipo "number" a veces puede quedarse corto. Cuando necesitas números realmente grandes o pequeños entonces utiliza BigInt.

```js
let bigInt = 1234567890123456789012345678901234567890n
// La n al final significa que es un BigInt
```

## Boolean

Los Boolean pueden tener dos valores: true o false

```js
let verdadero = true
let falso = false
```

## Symbol

Symbol crea un valor único e inmutable.

Para crear un Symbol se usa la función Symbol(), esta función puede recibir un parámetro del tipo 'String' que puede ser útil para depurar.

```js
let Symbol1 = Symbol('clave')
let Symbol2 = Symbol('clave')

// Incluso con la misma descripción los símbolos no son iguales
Symbol1 === Symbol2 // false
```

## Object

En JavaScript, un objeto es una colección de propiedades, donde cada propiedad es definida como un par clave-valor.

```js
const FabricandoWebSocial = {
  instagram: 'https://www.instagram.com/fabricandoweb/',
  facebook: 'https://www.facebook.com/fabricandolaweb',
  likes: 2000,
}
```

## Null

Null expresa la falta de valor.

```js
let nullValue = null
```

## Undefined

Una variable a la cual no se le ha asignado valor es del tipo undefined. Una función también puede devolver undefined si no retorna ningún valor.

```js
let undefinedValue // undefined
```

## Bonus

Para obtener el tipo de dato de una variable podemos usar el operador typeof

```js
let test = 'hola'
console.log(typeof test) // 'string'
test = 20
console.log(typeof test) // 'number'
test = false
console.log(typeof test) // 'boolean'
```

### Extra

JavaScript es un lenguaje dinámico o débilmente tipado, por lo que una variable no se asocia con ningún tipo y se puede reasignar con cualquier otro. Sin embargo, su valor sí se asocia a un tipo.

```js
let test = 'hola' // Test es del tipo string
test = 20 // Ahora es del tipo number
test = false // Finalmente es del tipo boolean
```

