Tutorial Principal de JavaScript
Fundamentos
Introdução
Executando JavaScript
Primeiro programa em JavaScript
Análise do código do programa
Próximos exemplos
Arquivos de script
Múltiplos arquivos
Observação
Cache de arquivos
Modo estrito
Comentários
Variáveis
Usando variáveis
Declarando múltiplas variáveis
Alterando valores de variáveis
Múltiplos let para uma variável
Operações matemáticas com números
Operações matemáticas com variáveis
Prioridade das operações matemáticas
Prioridade igual
Parênteses de agrupamento
Frações
Números negativos
Mais antes de variáveis
Resto da divisão
Exponenciação
Prioridade da exponenciação
Strings
Concatenando strings
Comprimento da string
Template strings
Multilinha
Valores especiais
Valor undefined
Valor null
Valores true e false
Valor NaN
Infinity e -Infinity
Console
Tipo de dados no console
Erros no console
Constantes
Conversão automática de tipos
Conversão para número
Conversão curta para número
Conversão de números incorretos
Extraindo números
Conversão para string
Aplicando conversão para string
Conversão de tipo lógico
Conversão para tipo lógico
Caracteres da string
Imutabilidade de strings
Último caractere da string
Strings com dígitos
Acessando dígitos de um número
Operações para alterar variáveis
Operações abreviadas em JavaScript
Incrementação
Tipo prefixo e pós-fixo
Cálculos imprecisos
Função prompt
Problema com tipos no prompt
Saída no documento
Prática na busca de erros
Prática em operações
Prática em fórmulas
Matrizes
Introdução a matrizes
Obtendo elementos
Comprimento da matriz
Alterando elementos
Regravando elementos da matriz
Incrementação de elementos
Adicionando elementos por chaves
Matrizes esparsas
Adicionando elementos via push
Chaves de variáveis
Operador delete
Prática na busca de erros
Objetos
Introdução a Objetos
Exibição do Objeto Inteiro
Chaves de String de Objetos
Propriedades de Objetos
Restrições nas Chaves de Objetos
Alterando Elementos
Adicionando Elementos
Desordem dos Objetos
Array de Chaves do Objeto
Comprimento do Objeto
Chaves a partir de Variáveis
Erro de Acesso ao Elemento
Erro de Acesso à Propriedade
Propriedades Computadas
Operador in
Operador delete
Tipagem de Objetos
Arrays como Objetos
Diferenciando Arrays de Objetos
Objetos e Primitivos
Passagem de Objetos por Referência
Constantes
Abordagem de Programação via Constantes
Prática na Busca por Erros
Condições
Declaração if-else
Operadores maior e menor
Verificação de igualdade
Verificação de desigualdade
Comparação de variáveis
Igualdade de strings
Igualdade de strings e números
Igualdade de valor e tipo
Desigualdade de valor e tipo
E lógico
OU lógico
Precedência de operadores lógicos
Agrupamento de condições
Inversão de expressões lógicas
Condições com valores booleanos
Comparação de valores com tipo booleano
Forma abreviada de verificação de verdadeiro
Forma abreviada de verificação de falso
Forma abreviada geral de verificação
Condições complexas na forma abreviada
Opcionalidade da declaração else
Opcionalidade das chaves
Problema da opcionalidade das chaves
Declaração else if
Declarações if-else aninhadas
Declaração switch-case
Opcionalidade do break
Operador ternário
Operações lógicas
Função confirm
Escopo
Nuances de escopo
Verificação de partes da hora
Verificação do comprimento de strings e arrays
Verificação de caracteres da string
Verificação de dígitos do número
Verificação do resto da divisão
Prática na busca de erros
Prática
Laços
Introdução
Laço for-of
Laço for-in
Laço while
Laço for
Laço for para arrays
Condições em laços
Acúmulo de soma de números
Acúmulo de soma de elementos
Formação de strings
Dígitos de um número
Opcionalidade das chaves
Problema da opcionalidade das chaves
Instrução break
Instrução continue
Laços aninhados
Escopo
Laços aninhados e escopo
Preenchendo arrays
Modificando arrays
Preenchendo objetos
Modificando objetos
Trabalhando com flags
Dicas para escrever código
Dicas para depurar código
Prática na busca por erros
Prática
Multidimensionalidade
Arrays multidimensionais
Array tridimensional
Arrays arbitrários
Iteração de arrays multidimensionais
Iteração com for comum
Preenchendo arrays multidimensionais
Problemas ao preencher arrays multidimensionais
Preenchendo arrays multidimensionais em ordem
Objetos multidimensionais
Iteração de objetos multidimensionais
Estruturas multidimensionais
Iteração de estruturas multidimensionais
Array de objetos
Chaves de variáveis
Adicionando elementos a arrays
Adicionando elementos a objetos
Métodos Padrão
Potenciação
Funções de Arredondamento
Extremos
Aleatório
Módulos
Caixa de Caracteres
Corte de Strings
Busca em Strings
Substituição em Strings
Divisão de Strings
Elementos de Extremidade
Partes de Arrays
Corte de Arrays
Busca em Arrays
Chaves de Objetos
Prática na Busca de Erros
Funções Personalizadas
Introdução
Parâmetros de função
Vários parâmetros
Parâmetros-variáveis
Parâmetros opcionais
Instrução return
Chamada sequencial de funções
Ponto sutil do return
Loop e return
Aplicação do return em loops
Técnica de trabalho com return
Flags em funções
Operadores lógicos em funções
Dicas sobre funções
Prática na busca de erros
Prática em funções
Variáveis de Funções
Variáveis globais
Variáveis locais
Coincidência de nomes de variáveis
Alteração de variáveis globais
Variáveis globais e parâmetros de funções
Coincidência de nomes com parâmetros
Parâmetros-objetos
Tipos de Funções
Código-fonte da função e resultado
Função como variável
Atribuição de função a outra variável
Atribuição de funções a variáveis
Coincidência de nome de função e variável
Tipos de declaração
Diferença de declarações de função
Ponto e vírgula na declaração de funções
Nuances de expressões funcionais
Função com nome, mas Expression de Função
Expressões funcionais nomeadas
Como verificar o tipo de uma função
Expressão à esquerda
Expressão à direita
Array com funções
Objeto com funções
Aplicação de objeto com funções
Funções Aninhadas
Passando Funções como Parâmetros
Funções Nomeadas
Parâmetros de Funções Passadas
Passando Número como Parâmetro
Aplicação
Funções Internas
Escopo de Funções Aninhadas
Parâmetros da Função Externa
Parâmetros das Funções Externa e Interna
Parâmetros com o Mesmo Nome
Função que Retorna uma Função
Qualquer Nível de Aninhamento
Parâmetros da Função Retornada
Funções de Callback
Nuances de Callbacks
Funções Seta
Aplicação de Funções Seta
sinc. com a tradução
Closures
Acesso a variáveis externas
Ambiente léxico de funções
Aplicação do ambiente léxico
Introdução às closures
Contador com closures
Nuance variável local
Nuance variável global
IIFE
Chamada de função imediata
Atribuição da função a uma variável
Aplicação da chamada de função imediata
Parênteses
Parâmetros
Múltiplas chamadas
Armadilhas
Ponto e vírgula de segurança
Closures e IIFE
Recursão
Introdução
Exemplo com parâmetro
Soma dos elementos de um array com recursão
Estruturas multidimensionais
Soma dos elementos de um array
Manipulações de estruturas
Métodos de Iteração
Método map
Método forEach
Método filter
Método every
Método some
Método find
tradução, tarefas
Método reduce
tradução, tarefas
Operador spread
Introdução
Exemplos mais complexos
Valores extremos de array
Fusão de arrays
Divisão de strings
Divisão de números
Operador rest
Desestruturação
Desestruturação de arrays
Array de uma função
Pular elementos do array
Valores excedentes do array
Resto do array
Valores padrão para arrays
Funções padrão para arrays
Declaração de variáveis para arrays
Desestruturação de objetos
Nomes de variáveis para objetos
Valores padrão para objetos
Variáveis e valores padrão para objetos
Declaração de variáveis para objetos
Parâmetros de funções
Desestruturação de objetos de parâmetros de funções
Tempo
Trabalhando com o objeto Date
Formatação
Alterando o formato da data
Obtendo o dia da semana
Exibindo a data por extenso
Definindo o tempo
Formato timestamp
Diferença entre timestamps
Diferença entre objetos de data
Ajuste automático de datas
Encontrando o último dia do mês
Determinando o ano bissexto
Verificando a correção
Obtendo o dia do ano atual
Dia do próximo ou do mês anterior
Dia do próximo ou do ano anterior
Diferença entre momentos
Momento do tempo do dia
Início do dia
Fim do dia
Verificação cíclica de momentos de tempo
Prática na obtenção de momentos de tempo
Comparação de strings
Comparação de data sem o ano
Verificação se uma data está dentro de um intervalo
Comparando objetos de data
Introdução ao DOM
Introdução
Elementos DOM
Obtendo elementos DOM
Seletores complexos de elementos DOM
Vinculação de manipuladores
Manipuladores nomeados
Um manipulador para vários elementos
Vários manipuladores de um evento
Manipuladores de eventos diferentes
Texto do elemento
Código HTML do elemento
Atributos de tag como propriedades
Trabalhando com campos de texto
Foco em campos de texto
Atributos-exceção
Cadeias de métodos e propriedades
Vantagens e desvantagens das cadeias
Objeto this
Vantagem do this
Obtendo um grupo de elementos
Manipuladores nomeados em loop
Manipuladores anônimos em loop
Desvinculação de manipuladores de eventos
Desvinculação de manipuladores em loop
Desvinculação de manipuladores anônimos
Dicas para escrever código
Prática na busca de erros
Practicum
Atributos
Método de obtenção de atributos
Método de definição de atributos
Método de remoção de atributos
Método de verificação de atributos
Atributos personalizados
Nomes de atributos com hífens
Acesso a atributos através de métodos
Array de classes CSS
Adição de classes CSS
Remoção de classes CSS
Verificação de classes CSS
Alternância de classes CSS
Estilização
Estilização via atributo style
Estilização de propriedades com hífen
Exceção na estilização de elementos
Estilização via classes CSS
Vantagem da estilização com classes CSS
Aplicação de estilização
Pesquisa
Encontrando descendentes de elementos
Encontrando pais de elementos
Procurando todos os pais dos elementos
Procurando elementos irmãos
Procurando elemento por id
Procurando elemento por nome de tag
Procurando elemento por nome de classe
Procurando dentro de um elemento
Nós
Formulários
Trabalhando com textarea
Desabilitando elementos
Trabalhando com checkboxes
Alternância de atributos sem valores
Trabalhando com botões de rádio
Evento change
Evento input
Métodos focus e blur
Prática na busca por erros
Listas Suspensas
Trabalhando com listas suspensas
Atributo value em listas suspensas
Alterando o item selecionado da lista
Número do item selecionado da lista
Obtendo os itens de uma lista suspensa
Itens como um array
Trabalhando com os itens de uma lista suspensa
Selecionando um item da lista
Obtendo o item selecionado
Objeto Event
Noções básicas do objeto Event
Coordenadas do evento
Tipo de evento
Elemento do evento
Obtendo teclas pressionadas
Acompanhando teclas modificadoras
Cancelando a ação padrão
Propagação de eventos
Elemento alvo durante a propagação
Interrompendo a propagação de eventos
Múltiplos manipuladores em um elemento
Interrupção imediata da propagação
Aplicação da interrupção da propagação de eventos
Captura de eventos
Manipuladores em novos elementos
Delegação de eventos
Delegação universal de eventos
Contexto
Fundamentos do contexto
Contexto de função não vinculada
Perda de contexto
Resolvendo o problema de contexto
Solução via variável
Solução via parâmetro
Solução via função de seta
Método call
Método call com parâmetros
Método apply
Método bind
Temporizadores
Iniciando um temporizador
Contador em um temporizador
Parando um temporizador
Botões de início
Início múltiplo
Botões de parada
Trabalhando com o DOM
Temporizadores e perda de contexto
Prática com temporizadores e DOM
Atraso antes da execução
Temporizador com atraso
Manipulação de Elementos
Criação e inserção de elementos
Associando eventos durante a inserção
Criação de elementos em loop
Associando manipuladores em loop
Remoção de elementos
Inserção na extremidade
Inserção antes
Inserção adjacente
Inserção adjacente de tags
Clonagem de elementos
Verificação de elementos
Prática
Criação de elementos a partir de um array
Prática na criação de listas ul
Criação de tabelas
Preenchimento consistente de tabelas
Criação de tabela a partir de um array
Criação de tabela a partir de um array de objetos
Adição de linhas e colunas em uma tabela
Modificação de células da tabela
Remoção de novos elementos
Link para remoção de elemento
Criação de links de remoção
Edição de elemento individual
Ocultando texto durante a edição
Edição em um conjunto de elementos
Remoção e edição
Estilização de elementos
Botões para ocultar e mostrar elemento
Muitos elementos com botões de exibição
Ativação de elementos
Alternância de estilos de ativação
Prática na alteração de elementos
Funções e DOM
Funções para trabalhar com elementos DOM
Funções para trabalhar com grupos de elementos
Passagem de callback para trabalhar com DOM
Passagem de número sequencial no callback
Passagem de elemento como parâmetro de função
Passagem de grupos de elementos como parâmetros
Função para criar tabelas HTML
Retorno de tabela da função
Função para criar tabela a partir de array