Variables y Tipos de Datos
## Objetivos de Aprendizaje
- Comprender los tipos de datos primitivos
- Declarar variables con const, let y var
- Trabajar con strings, numbers y booleans
- Entender null y undefined
## Tipos de Datos Primitivos
JavaScript tiene 7 tipos de datos primitivos:
| Tipo | Descripción | Ejemplo |
|------|-------------|---------|
| string | Texto | `"Hola"` |
| number | Número | `42`, `3.14` |
| boolean | true o false | `true` |
| null | Valor nulo intencional | `null` |
| undefined | No asignado | `undefined` |
| symbol | Identificador único | `Symbol()` |
| bigint | Enteros grandes | `9007199254740991n` |
## Declarando Variables
### const (Inmutable)
```javascript
const PI = 3.14159;
const NOMBRE_USUARIO = "María";
// PI = 3; // Error: No se puede reasignar
```
### let (Mutable)
```javascript
let edad = 25;
edad = 26; // Permitido
let mensaje = "Hola";
mensaje = "Adiós"; // Permitido
```
### var (Antiguo)
```javascript
var nombre = "Juan";
var nombre = "Pedro"; // Redeclaración permitida (¡peligroso!)
```
## Strings (Cadenas de Texto)
### Comillas
```javascript
const comillaSimple = 'Hola';
const comillaDoble = "Mundo";
const plantilla = `¡Hola, ${comillaDoble}!`;
```
### Métodos de String
```javascript
const texto = "JavaScript es genial";
texto.length; // 20
texto.toUpperCase(); // "JAVASCRIPT ES GENIAL"
texto.toLowerCase(); // "javascript es genial"
texto.includes("genial"); // true
texto.startsWith("Java"); // true
texto.endsWith("genial"); // true
texto.slice(0, 10); // "JavaScript"
texto.split(" "); // ["JavaScript", "es", "genial"]
```
### Plantillas de Cadena
```javascript
const nombre = "Ana";
const edad = 28;
const presentacion = `Hola, soy ${nombre} y tengo ${edad} años.`;
const multi = `
Este es
un texto
multilínea
`;
```
## Numbers (Números)
### Enteros y Decimales
```javascript
const entero = 42;
const decimal = 3.14159;
const cientifico = 1.5e10; // 15000000000
```
### Operaciones Matemáticas
```javascript
10 + 5; // 15 (suma)
10 - 5; // 5 (resta)
10 * 5; // 50 (multiplicación)
10 / 5; // 2 (división)
10 % 3; // 1 (residuo)
10 ** 2; // 100 (exponenciación)
```
### Funciones Math
```javascript
Math.PI; // 3.141592653589793
Math.round(4.5); // 5
Math.floor(4.5); // 4
Math.ceil(4.5); // 5
Math.abs(-5); // 5
Math.sqrt(16); // 4
Math.pow(2, 3); // 8
Math.random(); // número aleatorio 0-1
```
### NaN e Infinity
```javascript
Math.sqrt(-1); // NaN (No es un número)
1 / 0; // Infinity
-1 / 0; // -Infinity
isNaN(Math.sqrt(-1)); // true
isFinite(1 / 0); // false
```
## Booleans
```javascript
const verdadero = true;
const falso = false;
// Operadores de comparación
10 > 5; // true
10 < 5; // false
10 === 10; // true
10 !== 5; // true
```
## null y undefined
### null
Valor intencionalmente vacío:
```javascript
const vacio = null;
console.log(vacio); // null
```
### undefined
Variable declarada sin valor:
```javascript
let sinDefinir;
console.log(sinDefinir); // undefined
// Explícito
const noAsignado = undefined;
```
### Diferencia
```javascript
let a = null; // Intencionalmente vacío
let b; // No definida todavía
console.log(a === null); // true (usar para verificar null)
console.log(b === undefined); // true
```
## Conversión de Tipos
### A String
```javascript
String(42); // "42"
(42).toString(); // "42"
true.toString(); // "true"
```
### A Number
```javascript
Number("42"); // 42
Number("42.5"); // 42.5
Number("hola"); // NaN
Number(true); // 1
Number(false); // 0
parseInt("42"); // 42
parseFloat("42.5"); // 42.5
```
### A Boolean
```javascript
Boolean(1); // true
Boolean(0); // false
Boolean("hola"); // true
Boolean(""); // false
Boolean(null); // false
Boolean(undefined); // false
```
## Verificación de Tipos
### typeof
```javascript
typeof "hola"; // "string"
typeof 42; // "number"
typeof true; // "boolean"
typeof null; // "object" (¡error histórico!)
typeof undefined; // "undefined"
typeof {}; // "object"
typeof []; // "object"
typeof function(){}; // "function"
```
## Resumen
- `const` para valores que no cambian, `let` para variables
- Strings: comillas simples, dobles o plantillas
- Numbers: enteros y decimales con Math para operaciones
- Booleans: `true` o `false`
- `null` es intencional; `undefined` es no asignado
- Usa `Number()`, `String()`, `Boolean()` para conversión
- `typeof` verifica el tipo de una variable
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →