JavaScript
Curso de introdução ao JavaScript.
Antes de estudarmos o JavaScript, vimos na aula de lógica de programação sobre os algoritmos, que é um conjunto de passos para que um programa de computador possa realizar uma tarefa, tornando os nosso programas mais rápidos. Então como vamos dar essa instrução ao nosso computador? será que ele vai executar as minhas instruções do jogo que quero criar para web escrevendo no idioma português? a resposta é: Não, precisamos estudar um "idioma" uma linguagem da web que o computador entenda essa instruções para que eu comece a criar o meu jogo, então vamos começar a estudar o JavaScript.
Hello! o que é JavaScript?
JavaScript é uma linguagem de programação interpretada, isso significa que você escreve o seu programa em um arquivo .js e abre esse arquivo em um navegador ou no node.js, ele automaticamente vai ser interpretado, diferente de uma linguagem compilada que primeiro tem que compilar o código para depois executar.(exemplo developer tools). JavaScript está entre as linguagens de programação mais poderosas e flexíveis da web.
O que podemos fazer com JavaScript?
O JavaScript foi criado para aplicações Front-End, onde faz a manipulação do DOM e comunicação assíncrona com o back-end. A linguagem permite que você desenvolva vários tipos de projetos, desde os mais simples e complexos como:
Aplicações web (Gmail, Google Maps, Google Docs, Github, Slack, Linkedin)
Animações complexas
Javascript e a especificação ECMAScript
Vamos entender um pouco sobre esse ECMAScript, e para isso vamos ver rapidinho a história da linguagem, quando estamos criando algo, a primeira coisa em mente é dar o nome, para melhor identificação e o que se propõe aquele nome, ficando mais fácil para divulgar e as pessoas assimilarem.
Quando foi criado em 1995, por Brendan Eich, era Mocha.
No lançamento mudaram o nome para LiveScript 2.0 no navegador Netscape
Acredita-se por uma estratégia de marketing quando a linguagem java (sun microsystem) foi lançada a netscape aproveitou o momento e mudou para JavaScript.
Mas a Sun Microsystems havia patenteado o nome JavaScript, então o Netscape mudou para ECMAScript.
O nome oficial de JavaScript é ECMAScript
versões de JS contém referência ao nome da especificação como, por exemplo, “ES6” ou “ECMAScript 2015”.
Portanto desde a sua criação a linguagem vem melhorando e em cada versão implementando novos recursos, vamos abrir esse link para conhecer um pouco mais.
Console
O console é um painel que exibe mensagens importantes, como erros, para os desenvolvedores. Grande parte do trabalho que o computador faz com nosso código é invisível para nós por padrão. Se quisermos que as coisas apareçam na tela, podemos imprimir ou fazer logon diretamente no nosso console.
Em JavaScript, a console
palavra - chave refere-se a um objeto, uma coleção de dados e ações, que podemos usar em nosso código. Palavras-chave são palavras incorporadas à linguagem JavaScript, para que o computador as reconheça e as trate especialmente.
Uma ação ou método incorporado ao console
objeto é o .log()
método Quando escrevermos console.log()
o que colocamos dentro dos parênteses, serão impressos ou registrados no console.
Este exemplo faz logon 5
no console. O ponto e vírgula indica o fim da linha ou instrução. Embora em JavaScript seu código normalmente seja executado como pretendido sem ponto e vírgula, recomendamos que você aprenda o hábito de terminar cada instrução com ponto e vírgula, para que você nunca a deixe de fora nos poucos casos em que forem necessárias.
Tipos de Dados
O JavaScript tem seis tipos de dados primitivos:
Boolean: armazena dois valores, true (verdadeiro) ou false (falso).
Number: armazena números inteiros, decimais ou hexadecimais.
String: armazena texto. Pode estar entre aspas simples (’ '), asplas duplas ("" “”) ou backticks (` `), ou seja os acentos graves.
Undefined: quando não há nenhum valor atribuído.
Null: armazena um valor vazio.
*Obs: Sobre os backticks: Implementando esse tipo de dados, permite fazer interpolação de strings que permite colocar uma variável dentro do backticks.
Variáveis
Responsáveis por guardar dados na memória, onde podem ser armazenados valores de diferentes tipos que podem ser números inteiros, reais, strings, booleanos, entre outros. A diferença entre var e let tem a ver com escopo vou abordar mais na frente, Já const, de constante, não pode ter o seu valor modificado depois que for atribuído uma vez, ao contrário do var e let que podem ser modificados a qualquer hora.
Ex: Sintaxe para declarar uma variável, pode iniciar com a palavra var, let ou const.
Você pode criar mais de uma variável, sem repetir a palavra chave var.
Vamos chamar essa variáveis no console do navegador para visualizar os valores.
Variável sem Valor
Pode declarar sem atribuir nenhum valor.
Números e Operadores
Precisamos de operadores quando realizamos qualquer operação em uma linguagem de programação . A linguagem javascript também tem operadores aritméticos, atribuição, operação , lógicos, unários, entre outros.
Vamos ver alguns exemplos abaixo:
Operadores Aritméticos realizam aritmética em números (literais ou variáveis).
Exemplo abaixo: Lembrando que soma + em Strings serve para concatenar.
Operadores Lógicos são usados para determinar a lógica entre variáveis ou valores.
Operador Precedente
A precedência do operador descreve a ordem em que as operações são executadas em uma expressão aritmética.
Multiplicação (
*
) e divisão (/
) têm maior precedência que adição (+
) e subtração (-
).
Números
JavaScript tem apenas um tipo de número. Os números podem ser escritos com ou sem decimais.
Not a Number
NaN
é uma palavra reservada em JavaScript, indicando que um número não é um número legal.
Tentar fazer aritmética com uma sequência não numérica resultará em NaN
(Não é um número)
É possível verificar se uma variável é NaN ou não com a função isNaN()
No entanto, se a sequência contiver um valor numérico, o resultado será um número:
Você pode usar a função JavaScript global
isNaN()
para descobrir se um valor é um número:
Boolean e Condicionais
Um booleano JavaScript representa um dos dois valores: verdadeiro ou falso ou 0(zero) ou 1(um)
Condicionais
As condicionais são usadas em partes do programa onde você quer executar certa lógica só quando certas condições são cumpridas, ou quando você quer executar uma lógica diferente para cada caso dentro do programa..
If e Else
É usado para condições simples.
Verifica se uma expressão é verdadeira com if , caso contrário o else será ativado.
O valor dentro dos parênteses sempre será avaliado em false ou true.
Se o if não for verdadeiro, ele testa o else if
Operador Ternário
O operador ternário é muito parecido com o if e else, mas permite escrever condições de forma mais simples e direta, porque ele substitui o if/else por o ponto de interrogação "?" e logo depois, se a condição for verdadeira a primeira parte antes do : (dois ponto) será executada, se for falsa a segunda parte será executada.
Switch
O switch é usado para condições mais complexas, onde há a presença de várias casos independentes. verifica se uma variável é igual à diferentes valores utilizando o case, se for igual, executa uma ação e utiliza a palavra chave break; para cancelar a continuação. O valor default será caso nenhuma das opções forem verdadeiras.
Função
Bloco de código que pode ser executado e reutilizado. Valores podem ser passados por uma função e a mesma retorna outro valor.
Vamos fazer uma analogia para melhor compreensão de uma função: Ex: botão descongelar do microondas, tem instruções prontas, você só precisa clicar para retornar alguma ação, você não precisou saber do passo a passo dessa instrução para descongelar uma comida, já estava pronta e já tinha um nome: ex: btDescongelar. Seguindo esse exemplo, podemos imaginar uma máquina de refrigerante, o caixa eletrônico do banco , controle remoto da televisão, opções de uma jogo ex: correr, pular, lutar, etc..
Parâmetros e Argumentos
Ao criar uma função, você pode definir parâmetros (seria uma variável) e ao executar uma função você pode passar argumentos (valores do parâmetro).
Chamando uma função
Como no exemplo acima, uma declaração de função está vinculada com a palavra chave "function + nome () + {as instruções que essa função vai executar }
No entanto, uma declaração de função não solicita a execução do código dentro do corpo da função, apenas declara a existência da função. O código dentro do corpo de uma função é executado ou executado apenas quando a função é chamada .
Para chamar uma função no seu código, digite o nome da função seguido por parênteses. Ex: areQuadrardo( );
Se você ver um código em JavaScript que tem um nome seguido de um parênteses, é uma função. Uma função vai receber algo para retornar ou ás vezes não recebe nada, mas retorna algo também.
Separar por virgula cada parâmetro, você pode definir mais de uma parâmetro ou nenhum também, como falamos acima.
Funções anônimas
São funções que não tem nome, você pode atribuir a uma variável, independentemente de haver um nome para a função ou junto com algum manipulador de eventos do JavaScript, vamos ver um exemplo no código para ficar mais claro.
Não se preocupem com os métodos querySelector/addEventListener, vamos abordar nesse curso nas próximas aulas de acordo com o nosso cronograma, o objetivo é mostrar as situações que vocês podem usar uma função anônima.
Arrow functions
O ES6 introduziu a sintaxe da função de seta (Arrow function), uma maneira mais curta de escrever funções usando a () =>
notação especial
As funções de seta eliminam a necessidade de digitar a palavra chavefunction
toda vez que você precisar criar uma função. Em vez disso, você primeiro inclui os parâmetros dentro do ( )
e, em seguida, adiciona uma seta =>
que aponta para o corpo da função cercado { }
desta maneira:
É importante estar familiarizado com as várias maneiras de escrever funções, porque você encontrará cada uma delas ao ler outro código JavaScript. Vamos ver alguns exemplos:
Arrays
Organizar e armazenar dados é um conceito fundamental de programação.
Uma maneira de organizar dados na vida real é fazendo listas. Vamos fazer um aqui:
Ano Novo - Resoluções: 1. Cuidar da saúde 2. Estudar inglês 3. JavaScript
vamos pegar as anotações acima e transforma em uma lista (array)
Arrays (matrizes) são a maneira de o JavaScript fazer listas. As matrizes podem armazenar qualquer tipo de dados (incluindo cadeias, números e booleanos). Como as listas, as matrizes são ordenadas, o que significa que cada item tem uma posição numerada.
Criando um array.
Uma maneira de criar uma matriz é envolvendo itens entre colchetes []
. As matrizes podem armazenar qualquer tipo de dados - podemos ter uma matriz que contém todos os mesmos tipos de dados ou uma matriz que contém tipos de dados diferentes.
Vamos dar uma olhada na sintaxe no exemplo do Array:
A matriz é representada pelos colchetes
[]
e pelo conteúdo interno.Cada item de conteúdo dentro de uma matriz é chamado de elemento .
Existem três elementos diferentes dentro da matriz.
Cada elemento dentro da matriz é um tipo de dados diferente.
Acessando elementos no Array
Cada elemento em uma matriz possui uma posição numerada conhecida como seu índice . Podemos acessar itens individuais usando seu índice, o que é semelhante a referenciar um item em uma lista com base na posição do item.
Matrizes em JavaScript são indexadas em zero , o que significa que as posições começam a contar em 0
vez de 1
. Portanto, o primeiro item de uma matriz estará na posição 0
. Vamos ver como podemos acessar um elemento em uma matriz:
No trecho de código acima:
cities
é uma matriz que possui três elementos.Estamos usando a notação de colchete,
[]
com o índice após o nome da matriz para acessar o elemento.cities[0]
acessará o elemento no índice0
na matrizcities
. Você pode pensarcities[0]
em acessar o espaço na memória que contém a string'New York'
.
Você também pode acessar caracteres individuais em uma sequência usando a notação entre colchetes e o índice. Por exemplo, você pode escrever:
Atualizando elementos no Array
Depois de ter acesso a um elemento em uma matriz, você pode atualizar seu valor.
No exemplo acima, a estacoes
a matriz continha os nomes das quatro estações do ano. No entanto, atualizamos de 'Fall'
para 'Outono'
A linha estacoes[3] = 'Outono';
diz ao nosso programa para alterar o item no índice 3 da matriz estacoes para'Outono'
A propriedade .length - Array
Uma das propriedades internas de uma matriz é length
e retorna o número de itens na matriz. Acessamos a .length
propriedade como fazemos com as cordas. Veja o exemplo abaixo:
No exemplo acima:
Usamos notação de ponto , encadeando um período com o nome da propriedade para a matriz, para acessar a
length
a propriedade da matrizanoNovo
.Em seguida, registramos o
length
deanoNovo
no console.Como
anoNovo
possui três elementos,3
seria registrado no console.
Quando queremos saber quantos elementos há em uma matriz, podemos acessar a propriedade .length
O método .push ()
Vamos aprender sobre alguns métodos JavaScript internos que facilitam o trabalho com matrizes. Esses métodos são chamados especificamente de matrizes para tornar mais simples as tarefas comuns, como adicionar e remover elementos.
Um método, .push()
permite adicionar itens ao final de uma matriz. Aqui está um exemplo de como isso é usado:
Então, como .push()
funciona?
Acessamos o método
push
usando a notação de ponto, conectando oitemTracker
Então chamamos isso de função. O
.push()
ocorre porque é uma função que o JavaScript nos permite usar diretamente em uma matriz..push()
pode levar um único argumento ou vários argumentos separados por vírgulas. Nesse caso, estamos adicionando dois elementos:'item 3'
e'item 4'
paraitemTracker
.Observe que
.push()
muda, ou se transforma ,itemTracker
. Você também pode ver.push()
referido como um método de matriz destrutiva , pois altera a matriz inicial.
O método .pop ()
Outro método de matriz .pop()
, remove o último item de uma matriz.
No exemplo acima, chamando
.pop()
a matriznewItemTracker
removidaitem 2
do final..pop()
não aceita argumentos, simplesmente remove o último elemento denewItemTracker
..pop()
retorna o valor do último elemento. No exemplo, armazenamos o valor retornado em uma variávelremoved
a ser usada para mais tarde..pop()
é um método que modifica a matriz inicial.
Quando você precisar alterar uma matriz removendo o último elemento, use .pop()
.
Mais métodos de matriz
Existem muitos outros métodos de matriz do que apenas .push()
e .pop()
. Você pode ler sobre todos os métodos de matriz existentes na documentação da matriz da Mozilla Developer Network (MDN) .
.pop()
e .push()
modifique o array no qual eles são chamados. No entanto, há momentos em que não queremos alterar a matriz original e podemos usar métodos de matriz sem mutação. Verifique o MDN para entender o comportamento do método que você está usando.
Algumas matrizes métodos que estão disponíveis para desenvolvedores de JavaScript incluem: .join()
, .slice()
, .splice()
, .shift()
, .unshift()
, e .concat()
entre muitos outros. O uso desses métodos internos facilita a execução de algumas tarefas comuns ao trabalhar com matrizes.
Abaixo, exploraremos alguns métodos que ainda não aprendemos. Usaremos esses métodos para editar uma lista de compras. Ao concluir as etapas, você pode consultar a documentação do MDN para saber o que cada método faz!
Matrizes e funções
Ao longo da lição, examinamos as matrizes que são mutáveis ou mutáveis. Bem, o que acontece se tentarmos alterar uma matriz dentro de uma função? A matriz mantém a alteração após a chamada da função ou está dentro do escopo da função?
Veja o exemplo a seguir, em que chamamos .push()
uma matriz dentro de uma função. Lembre-se, o .push()
método muda ou altera uma matriz:
Vamos revisar o que aconteceu no exemplo:
A matriz
flowers
possui 3 elementos.A função
addFlower()
possui um parâmetro dearr
o método.push()
vai adicionar o elemento'lily'
no parâmetroarr
.Chamamos a função
addFlower()
como argumento para essa função vamos chamar a variávelflowers
que está armazenado o array e que executará o código dentroaddFlower
.Verificamos o valor de
flowers
e agora inclui o'lily'
elemento! A matriz foi alterada!
Portanto, quando você passa um array para uma função, se o array estiver sido alterado dentro da função, essa alteração também será mantida fora da função. Você também pode ver esse conceito explicado como passagem por referência, já que estamos passando a função de fato como uma referência para onde a memória variável está armazenada.
Matrizes aninhadas
Mencionamos anteriormente que matrizes podem armazenar outras matrizes. Quando uma matriz contém outra matriz, ela é conhecida como matriz aninhada . Examine o exemplo abaixo: Mencionamos anteriormente que matrizes podem armazenar outras matrizes. Quando uma matriz contém outra matriz, ela é conhecida como matriz aninhada . Examine o exemplo abaixo:
Para acessar as matrizes aninhadas, podemos usar a notação de colchete com o valor do índice, assim como fizemos para acessar qualquer outro elemento:
Observe que nestedArr[1]
o elemento do índice 1 será o array [2, 3]
. Então, se quisermos acessar os elementos dentro da matriz aninhada, podemos encadear ou adicionar mais notações de colchetes com valores de índice.
Na segunda declaração console.log()
, temos duas notações de colchetes acorrentadas nestedArr
. Sabemos que essa nestedArr[1]
é a matriz [2, 3]
. Então, para pegar o primeiro elemento desse array, usamos nestedArr[1][0]
e obtemos o valor de 2
.
Revisar matrizes
Nesta assunto, aprendemos esses conceitos sobre matrizes:
Matrizes são listas que armazenam dados em JavaScript.
Matrizes são criadas com colchetes
[]
.Cada item dentro de uma matriz está em uma posição numerada ou índice, começando em
0
.Podemos acessar um item em uma matriz usando seu índice, com sintaxe como:
myArray[0]
.Também podemos alterar um item em uma matriz usando seu índice, com sintaxe do tipo
myArray[0] = 'new string'
;As matrizes têm uma propriedade
length
, que permite ver quantos itens estão em uma matriz.As matrizes têm seus próprios métodos, incluindo
.push()
e.pop()
, que adicionam e removem itens de uma matriz, respectivamente.As matrizes têm muitos métodos que executam tarefas diferentes, como
.slice()
e.shift()
, você pode encontrar documentação no site da Mozilla Developer Network .Alguns métodos internos estão em mutação, o que significa que o método alterará a matriz, enquanto outros não estão em mutação. Você sempre pode verificar a documentação.
Variáveis que contêm matrizes podem ser declaradas com
let
ouconst
. Mesmo quando declarado comconst
, as matrizes ainda são mutáveis. No entanto, uma variável declarada comconst
não pode ser retribuída.Matrizes mutáveis dentro de uma função manterão essa alteração mesmo fora da função.
Matrizes podem ser aninhadas dentro de outras matrizes.
Para acessar elementos em matrizes aninhadas, índices de cadeia usando notação de colchete.
Aprender a trabalhar e manipular matrizes o ajudará a trabalhar com blocos de dados em JavaScript.
Escopo
Expressões regulares
Promises
Async
Await
Referências Bibliográficas:
Guia para consultas
Last updated