Tutorial Principal de JavaScript
Fundamentos
Introducción
Ejecutar JavaScript
Primer programa en JavaScript
Análisis del código del programa
Ejemplos adicionales
Archivos con scripts
Múltiples archivos
Nota
Almacenamiento en caché de archivos
Modo estricto
Comentarios
Variables
Uso de variables
Declaración de múltiples variables
Cambios en los valores de las variables
Múltiples let para una variable
Operaciones matemáticas con números
Operaciones matemáticas con variables
Prioridad de las operaciones matemáticas
Prioridad igual
Paréntesis de agrupación
Fracciones
Números negativos
Signo más antes de las variables
Resto de la división
Potenciación
Prioridad de la potenciación
Cadenas de texto
Concatenación de cadenas
Longitud de la cadena
Plantillas de cadena de texto
Multilínea
Valores especiales
Valor undefined
Valor null
Valores true y false
Valor NaN
Infinity e -Infinity
Consola
Tipo de dato en la consola
Errores en la consola
Constantes
Conversión automática de tipos
Conversión a número
Conversión corta a número
Conversión de números incorrectos
Extracción de números
Conversión a cadena de texto
Aplicación de la conversión a cadena
Conversión de tipo lógico
Conversión al tipo lógico
Caracteres de la cadena
Inmutabilidad de las cadenas
Último carácter de la cadena
Cadenas con dígitos
Acceso a los dígitos de un número
Operaciones para cambiar una variable
Operaciones abreviadas en JavaScript
Incremento
Tipo prefijo y postfijo
Cálculos imprecisos
Función prompt
Problema con tipos en prompt
Salida en el documento
Práctica en la búsqueda de errores
Práctica con operaciones
Práctica con fórmulas
Matrices (Arrays)
Introducción a las matrices
Obtención de elementos
Longitud de la matriz
Modificación de elementos
Reescritura de elementos de la matriz
Incrementación de elementos
Adición de elementos por claves
Matrices dispersas
Adición de elementos mediante push
Claves desde variables
Operador delete
Práctica en la búsqueda de errores
Objetos
Introducción a los objetos
Mostrar el objeto completo
Claves de objeto de cadena
Propiedades de los objetos
Restricciones en las claves de los objetos
Modificar elementos
Añadir elementos
Objetos no ordenados
Array de claves de objeto
Longitud del objeto
Claves a partir de variables
Error al acceder a un elemento
Error al acceder a una propiedad
Propiedades computadas
Operador in
Operador delete
Tipado de objetos
Arrays como objetos
Diferenciar arrays de objetos
Objetos y primitivos
Pasar objetos por referencia
Constantes
Enfoque de programación mediante constantes
Práctica en la búsqueda de errores
Condiciones
Sentencia if-else
Operadores mayor y menor
Comprobación de igualdad
Comprobación de desigualdad
Comparación de variables
Igualdad de cadenas
Igualdad de cadenas y números
Igualdad por valor y tipo
Desigualdad por valor y tipo
AND lógico
OR lógico
Prioridad de los operadores lógicos
Agrupación de condiciones
Inversión de expresiones lógicas
Condiciones con valores booleanos
Comparación de valores con tipo booleano
Forma abreviada de comprobación de verdad
Forma abreviada de comprobación de falsedad
Forma abreviada general de comprobación
Condiciones complejas en forma abreviada
Opcionalidad de la sentencia else
Opcionalidad de las llaves
Problema de la opcionalidad de los corchetes
Sentencia else if
Sentencias if-else anidadas
Sentencia switch-case
Opcionalidad de break
Operador ternario
Operaciones lógicas
Función confirm
Ámbito de visibilidad
Matices del ámbito de visibilidad
Comprobación de partes de la hora
Comprobación de la longitud de cadenas y arrays
Comprobación de caracteres de cadena
Comprobación de dígitos del número
Comprobación del resto de la división
Práctica de búsqueda de errores
Práctica
Bucles
Introducción
Bucle for-of
Bucle for-in
Bucle while
Bucle for
Bucle for para arrays
Condiciones en bucles
Acumulación de suma de números
Acumulación de suma de elementos
Formación de cadenas
Dígitos de un número
Opcionalidad de las llaves
Problema de la opcionalidad de llaves
Instrucción break
Instrucción continue
Bucles anidados
Ámbito de visibilidad
Bucles anidados y ámbito de visibilidad
Relleno de arrays
Modificación de arrays
Relleno de objetos
Modificación de objetos
Trabajo con flags
Consejos para escribir código
Consejos para depurar código
Práctica de búsqueda de errores
Práctica
Multidimensionalidad
Arrays multidimensionales
Array tridimensional
Arrays arbitrarios
Iteración de arrays multidimensionales
Iteración mediante for ordinario
Relleno de arrays multidimensionales
Problemas al rellenar arrays multidimensionales
Relleno de arrays multidimensionales en orden
Objetos multidimensionales
Iteración de objetos multidimensionales
Estructuras multidimensionales
Iteración de estructuras multidimensionales
Array de objetos
Claves de variables
Adición de elementos a arrays
Adición de elementos a objetos
Métodos estándar
Potencias
Funciones de redondeo
Extremos
Aleatorio
Módulos
Mayúsculas y minúsculas
Corte de cadenas
Búsqueda en cadenas
Reemplazo en cadenas
División de cadenas
Elementos extremos
Partes de arrays
Corte de arrays
Búsqueda en arrays
Claves de objetos
Práctica en búsqueda de errores
Funciones Personalizadas
Introducción
Parámetros de Función
Múltiples Parámetros
Parámetros-Variables
Parámetros Opcionales
Declaración return
Llamada Secuencial de Funciones
Detalle Sutil de return
Bucle y return
Aplicación de return en Bucles
Técnica de Trabajo con return
Banderas en Funciones
Operadores Lógicos en Funciones
Consejos sobre Funciones
Práctica de Búsqueda de Errores
Práctica de Funciones
Variables de funciones
Variables globales
Variables locales
Coincidencia de nombres de variables
Modificación de variables globales
Variables globales y parámetros de funciones
Coincidencia de nombres con parámetros
Parámetros-objetos
Tipos de funciones
Código fuente de la función y resultado
Función como variable
Escritura de función en otra variable
Asignación de funciones a variables
Coincidencia del nombre de la función y la variable
Tipos de declaraciones
Diferencia de declaraciones de función
Punto y coma al declarar funciones
Matices de las expresiones funcionales
Función con nombre, pero Expression de Función
Expresiones funcionales con nombre
Cómo comprobar el tipo de función
Expresión a la izquierda
Expresión a la derecha
Array con funciones
Objeto con funciones
Aplicación de objeto con funciones
Funciones Anidadas
Pasar funciones como parámetros
Funciones con nombre
Parámetros de funciones pasadas
Pasar un número como parámetro
Aplicación
Funciones internas
Alcance de las funciones anidadas
Parámetros de la función externa
Parámetros de funciones externas e internas
Parámetros homónimos
Función que retorna una función
Cualquier nivel de anidamiento
Parámetros de la función retornada
Funciones callback
Matices de los callbacks
Funciones flecha
Aplicación de funciones flecha
sinc. con traducción
Cierres
Acceso a variables externas
Entorno léxico de funciones
Aplicación del entorno léxico
Introducción a los cierres
Contador con cierres
Matiz variable local
Matiz variable global
IIFE
Invocación de función inmediata
Asignación de función a variable
Aplicación de la invocación de función inmediata
Paréntesis redondos
Parámetros
Llamadas múltiples
Trampas
Punto y coma de seguridad
Cierres y IIFE
Recursividad
Introducción
Ejemplo con parámetro
Suma de elementos de un array con recursión
Estructuras multidimensionales
Suma de elementos de un array
Manipulaciones con estructuras
Métodos de Iteración
Método map
Método forEach
Método filter
Método every
Método some
Método find
traducción, tareas
Método reduce
traducción, tareas
Operador spread
Introducción
Ejemplos más complejos
Valores extremos de array
Fusión de arrays
División de cadenas
División de números
Operador rest
Desestructuración
Desestructuración de arrays
Array desde función
Omisión de elementos del array
Valores excesivos del array
Resto del array
Valores por defecto para arrays
Funciones por defecto para arrays
Declaración de variables para arrays
Desestructuración de objetos
Nombres de variables para objetos
Valores por defecto para objetos
Variables y valores por defecto para objetos
Declaración de variables para objetos
Parámetros de funciones
Desestructuración de objetos de parámetros de funciones
Tiempo
Trabajo con el objeto Date
Formateo
Cambio de formato de fecha
Obtención del día de la semana
Salida de la fecha en palabras
Configuración de la hora
Formato timestamp
Diferencia entre timestamps
Diferencia de objetos con fechas
Ajuste automático de fechas
Búsqueda del último día del mes
Determinación del año bisiesto
Comprobación de corrección
Obtención del día del año actual
Día del mes siguiente o anterior
Día del año siguiente o anterior
Diferencia de momentos
Momento del tiempo del día
Inicio del día
Final del día
Comprobación cíclica de momentos de tiempo
Práctica en la obtención de momentos de tiempo
Comparación de cadenas
Comparación de fecha sin año
Inclusión de la fecha en un intervalo
Comparación de objetos con fecha
Introducción al DOM
Introducción
Elementos DOM
Obtención de elementos DOM
Selectores complejos de elementos DOM
Vinculación de manejadores
Manejadores nombrados
Un manejador para varios elementos
Múltiples manejadores para un evento
Manejadores para diferentes eventos
Texto del elemento
Código HTML del elemento
Atributos de etiquetas como propiedades
Trabajo con campos de texto
Enfoque de campos de texto
Atributos-excepción
Cadenas de métodos y propiedades
Ventajas y desventajas de las cadenas
Objeto this
Ventaja de this
Obtención de grupos de elementos
Manejadores nombrados en bucle
Manejadores anónimos en bucle
Desvinculación de manejadores de eventos
Desvinculación de manejadores en bucle
Desvinculación de manejadores anónimos
Consejos para escribir código
Práctica en búsqueda de errores
Practicum
Atributos
Método para obtener atributos
Método para establecer atributos
Método para eliminar atributos
Método para verificar atributos
Atributos personalizados
Nombres de atributos con guiones
Acceso a atributos mediante métodos
Array de clases CSS
Adición de clases CSS
Eliminación de clases CSS
Verificación de clases CSS
Alternancia de clases CSS
Estilización
Estilización mediante el atributo style
Estilización de propiedades con guión
Excepción al estilizar elementos
Estilización mediante clases CSS
Ventaja de estilizar usando clases CSS
Aplicación de estilización
Búsqueda
Búsqueda de descendientes de elementos
Búsqueda de padres de elementos
Búsqueda de todos los padres de elementos
Búsqueda de elementos hermanos
Búsqueda de elemento por id
Búsqueda de elemento por nombre de etiqueta
Búsqueda de elemento por nombre de clase
Búsqueda dentro de un elemento
Nodos
Formularios
Trabajar con textarea
Deshabilitar elementos
Trabajar con casillas de verificación
Alternar atributos sin valores
Trabajar con botones de radio
Evento change
Evento input
Métodos focus y blur
Práctica de búsqueda de errores
Listas desplegables
Trabajar con listas desplegables
Atributo value en listas desplegables
Cambiar el elemento seleccionado de la lista
Número del elemento seleccionado de la lista
Obtener elementos de la lista desplegable
Elementos como array
Trabajar con elementos de la lista desplegable
Seleccionar elemento de la lista
Obtener el elemento seleccionado
Objeto Event
Conceptos básicos del objeto Event
Coordenadas del evento
Tipo de evento
Elemento del evento
Obtención de teclas pulsadas
Seguimiento de teclas modificadoras
Cancelación de la acción por defecto
Burbujeo de eventos
Elemento objetivo durante el burbujeo
Detención del burbujeo de eventos
Múltiples manejadores en un elemento
Detención inmediata del burbujeo
Aplicación de la detención del burbujeo de eventos
Captura de eventos
Manejadores en nuevos elementos
Delegación de eventos
Delegación universal de eventos
Contexto
Fundamentos del contexto
Contexto de función no vinculada
Pérdida del contexto
Solución al problema del contexto
Solución mediante variable
Solución mediante parámetro
Solución mediante función flecha
Método call
Método call con parámetros
Método apply
Método bind
Temporizadores
Inicio de un temporizador
Contador en un temporizador
Detención de un temporizador
Botones de inicio
Inicio múltiple
Botones de parada
Trabajo con DOM
Temporizadores y pérdida de contexto
Práctica con temporizadores y DOM
Retraso antes de la ejecución
Temporizador con retraso
Manipulación de elementos
Creación e inserción de elementos
Vinculación de eventos al insertar
Creación de elementos en bucle
Vinculación de manejadores en bucle
Eliminación de elementos
Inserción en el borde
Inserción antes de
Inserción adyacente
Inserción adyacente de etiquetas
Clonación de elementos
Verificación de elementos
Práctica
Creación de elementos desde un array
Práctica en la creación de listas ul
Creación de tablas
Relleno secuencial de tablas
Creación de tablas desde un array
Creación de tablas desde un array de objetos
Adición de filas y columnas a la tabla
Modificación de celdas de tabla
Eliminación de nuevos elementos
Enlace para eliminar elemento
Creación de enlaces de eliminación
Edición de elemento individual
Ocultar texto al editar
Edición en un conjunto de elementos
Eliminación y edición
Estilización de elementos
Botones para ocultar y mostrar elemento
Muchos elementos con botones de mostrar
Activación de elementos
Alternancia de estilos de activación
Práctica en la modificación de elementos
Funciones y DOM
Funciones para trabajar con elementos DOM
Funciones para trabajar con grupos de elementos
Pasar callback para trabajar con DOM
Pasar número de secuencia en el callback
Pasar elemento como parámetro de función
Pasar grupo de elementos como parámetros
Función para crear tablas HTML
Retorno de tabla desde función
Función para crear tabla desde array