Você está na página 1de 18

INTRODUÇÃO

"I think everybody in this country should learn how


to program a computer because it teaches you how to
think."
— Steve Jobs, the Lost Interview

Tradução da frase: "Eu acho que todos neste país


deveriam aprender como programar um computador
porque isto te ensina como pensar."

Assim como Steve Jobs disse a frase acima, eu


também penso que todos deveriam aprender a
programar.

Como podemos perceber nos últimos tempos a


evolução tecnológica melhora a vida das pessoas e o
Software é um dos pilares da tecnologia do nosso
tempo. Com softwares pode-se resolver muitos
problemas do dia-a-dia. Então por que não aprender a
criar softwares para automatizar tarefas e assim
economizar tempo e dinheiro?
A LÓGICA DE
PROGRAMAÇÃO
A Lógica de Programação é código que são enviados na página
necessária para pessoas que desejam HTML.
trabalhar com desenvolvimento de
sistemas e programas, ela permite Outra característica comum nas
definir a sequência lógica para o linguagens de scripting é que
desenvolvimento. Então o que é lógica? normalmente elas são linguagens
interpretadas, ou seja, não dependem
Lógica de programação é a técnica de compilação para serem executadas.
de encadear pensamentos para atingir Essa característica é presente no
determinado objetivo. JavaScript: o código é interpretado e
executado conforme é lido pelo
SEQUÊNCIA LÓGICA navegador, linha a linha, assim como o
HTML.
Estes pensamentos podem ser
descritos como uma sequência de O JavaScript também possui grande
instruções, que devem ser seguidas tolerância a erros, uma vez que
para se cumprir uma determinada conversões automáticas são realizadas
tarefa. durante operações. Como será visto no
decorrer das aulas, nem sempre essas
Sequência Lógica são passos conversões resultam em algo esperado,
executados até atingir um objetivo ou o que pode ser fonte de muitos bugs,
solução de um problema. caso não conheçamos bem esse
mecanismo.
Em nossa nova jornada, vamos
aprender tudo que precisamos saber CONSOLE DO NAVEGADOR
para que possamos destravar nossa
mentalidade lógica e desenvolver Existem várias formas de executar
assim projetos tanto básico como códigos JavaScript em um página. Uma
projetos com alto nível de delas é executar códigos no que
complexidade utilizando a linguagem chamamos de Console. A maioria dos
JavaScript. navegadores desktop já vem com essa
ferramenta instalada. No Chrome, é
INICIANDO NO JAVASCRIPT possível chegar ao Console apertando
F12 e em seguida acessar a aba
O JavaScript, como o próprio nome "Console" ou por meio do atalho de
sugere, é uma linguagem de scripting. teclado Ctrl + Shift + C (assim como
Uma linguagem de scripting é vemos na aula); no Firefox, pelo atalho
comumente definida como uma Ctrl + Shift + K.
linguagem de programação que
permite ao programador controlar uma DEVELOPER TOOLS
ou mais aplicações de terceiros. No
caso do JavaScript, podemos controlar O console faz parte de uma série de
alguns comportamentos dos ferramentas embutidas nos
navegadores através de trechos de navegadores especificamente para nós
que estamos desenvolvendo um site.
Essa série de ferramentas é o que
chamamos de Developer Tools.
SINTAXE BÁSICA

OPERADORES TIPO DE DADOS

Podemos somar, subtrair, multiplicar e Não são apenas números que podemos
dividir como em qualquer linguagem: salvar numa variável. O JavaScript
Teste algumas contas digitando tem vários tipos de dados.
diretamente no console:
NUMBER
> 12 + 13 = 25
> 14 * 3 = 42 Com esse tipo de dados é possível
> 10 - 4 = 6 executar todas as operações que vimos
> 25 / 5 = 5 anteriormente:
> 23 % 2 = 1
> var pi = 3.14159;
Para armazenarmos um valor para uso > var raio = 20;
posterior, podemos criar uma > var perimetro = 2 * pi * raio
variável:
STRING
> var resultado = 102 / 17;
> undefined Uma string em JavaScript é utilizada
para armazenar trechos de texto:
No exemplo acima, guardamos o
resultado de 102 / 17 na variável > var empresa = "TORNE-SE UM
resultado. O resultado de criar uma PROGRAMADOR";
variável é sempre undefined. Para obter
o valor que guardamos nela ou mudar Para exibirmos o valor da variável
o seu valor, podemos fazer o seguinte: empresa fora do console, podemos
executar o seguinte comando:
> resultado
> 6 > alert(empresa);
> resultado = resultado + 10
> 16 O comando alerts erve para criação
> resultado de popups com algum conteúdo de
> 16 texto que colocarmos dentro dos
parênteses. O que acontece com o
Também podemos alterar o valor de seguinte código?
uma variável usando as operações
básicas com uma sintaxe bem > var numero = 30;
compacta: > alert(numero)

> var idade = 10; // undefined O número 30 é exibido sem problemas


> idade += 10; // idade vale 20 dentro do popup. O que acontece é
> idade -= 5; // idade vale 15 que qualquer variável pode ser usada
> idade /= 3; // idade vale 5 no alert. O JavaScript não irá
> idade *= 10; // idade vale 50 diferenciar o tipo de dados que está
armazenado numa variável, e se
necessário, tentará converter o dado
para o tipo desejado.
UNDEFINED O NaN tem duas características
especiais:
O tipo undefined é um tipo primitivo 1. Qualquer operação com NaN vai
que tem um valor especial undefined. retornar NaN.
Por padrão, quando uma variável é 2. O NaN não é igual a nenhum valor,
declarada, mas não inicializada, é incluindo ele mesmo.
atribuído a ela o valor undefined.
Considere o seguinte exemplo: SYMBOL

Nesse exemplo, foo é uma variável. O IE6 adicionou um tipo primitivo no


Como foo não foi inicializada, é atribuo JavaScript: o symbol.
a ela o valor undefined. O tipo de foo é Diferente de outros tipos primitivos, o
undefined. tiposymbol não tem uma forma literal.
Para criar um símbolo, chame a função
É importante observar que o operador Symbol como a seguir:
typeof também retorna undefined
quando você o chama em uma variável Observe que Symbol é uma função, não
que não foi declarada: um construtor de objetos, portanto,
não use o operador new. Se você usar
NULL terá um TypeError.

O tipo null é o segundo tipo de dado A função Symbol cria um valor único
primitivo que tem somente um valor: toda vez que você chamar ela.
null. O JavaScript define que null é um
ponteiro de objeto vazio. Você pode passar uma string descritiva
para a função Symbol com o propósito
È uma boa prática atribuir null a uma de registro e depuração:
variável irá guardar um objeto no
futuro, para que você possa verificar se Quando você chamar o método
o objeto é null ou não, usando a toString na variável de símbolo, ele vai
instrução if da seguinte maneira: retornar um nome mais descritivo,
como por exemplo:
O JavaScript define que null é igual a
undefined. Você pode usar símbolos para diversos
propósitos. Um deles é criar uma
NaN constante em forma de string que não
vai colidir com qualquer outro valor.
O JavaScript tem um valor numérico
especial chamado de NaN, uma A string 'click' pode ser usada para
abreviação de Not a Number, que diferentes propósitos e não exclusiva.
significa que o número é inválido. No entanto, o símbolo click é
Por exemplo, a divisão de uma string absolutamente exclusivo.
por um número, vai retornar NaN como object
no exemplo a seguir: No JavaScript, um objeto é uma
coleção de propriedades, onde cada
O NaN tem duas características propriedade é definida com um bar de
especiais: chave e valor.
Qualquer operação com NaN vai
retornar NaN.
O NaN não é igual a nenhum valor,
incluindo ele mesmo.
ESTRUTURA CONDICIONAL
IF - ELSE - SWITCH CASE
Em qualquer linguagem de 5. Outro par de chaves, dentro dele
programação, o código precisa tomar temos mais um pouco de código —
decisões e realizar ações de acordo, pode ser qualquer código que
dependendo de diferentes entradas. queiramos, e só vai executar se o teste
Por exemplo, em um jogo, se o número condicional retornar um valor diferente
de vidas do jogador é 0, então o jogo de true, neste caso not true,ou false.
acaba. Em um aplicativo de clima, se
estiver sendo observado pela manhã, Este tipo de código é bem legível por
ele mostra um gráfico do nascer do seres humanos — ele diz: "if a condição
sol; Mostra estrelas e uma lua se for for true, execute o bloco de código A,
noite. else execute o bloco de código B" (se a
condição for verdadeira, execute o
De longe o tipo mais comum de bloco de código A, senão execute o
declaração condicional que você usará bloco de código B).
em JavaScript — as modestas
declarações if... else. Você precisa saber que não é obrigado
a colocar a palavra reservada else e o
SINTAXE BÁSICA IF ... ELSE segundo bloco de par de chaves. O
código apresentado a seguir é
Veja a sintaxe básica do if...else no perfeitamente válido e não produz
pseudocódigo: erros:

> if (condicao) { > if (condicao) {


> código para executar caso a condição > > código para executar caso a condição >
seja verdadeira seja verdadeira
> } else { >}
> senão, executar este código > código a ser executado
>}

Aqui nós temos: Entretanto, você precisa ser cauteloso


aqui — neste caso, repare que o
1. A palavra reservada if seguida de segundo bloco de código não é
um par de parênteses. controlado pela declaração
2. Um teste condicional, localizado condicional, então ele vai executar
dentro dos parênteses (normalmente sempre, independente do teste
"este valor é maior que esse", ou "este condicional retornar true ou false. É
valor existe"). Esta condição pode fazer claro, isto não é necessariamente uma
uso dos operadores de comparação que coisa ruim, mas isso pode não ser o que
discutimos no último módulo, e podem você quer — com muita frequência você
retornar true ou false. vai querer executar ou um bloco de
3. Um par de chaves, e dentro dele código ou outro, não os dois juntos.
temos código — pode ser qualquer
código que queiramos, e só vai ser SWITCH CASE
executado se o teste condicional
retornar true. Se a condição for correspondida, o
4. A palavra reservada else. programa executa as instruções
associadas. Se múltiplos casos
corresponderem o valor, o primeiro caso A instrução opcional break associada
que corresponder é selecionado, mesmo com cada case garante que o programa
se os casos não forem iguais entre si. saia da condicional switch assim que a
instrução correspondente for executada e
O programa primeiro procura por um executa a instrução que segue logo após o
caso o qual a expressão avalie como switch. Caso break seja omitido, o
tendo o mesmo valor que o input da programa continua a execução para a
expressão (usando a comparação de próxima instrução dentro de switch.
igualdade escrita, ===) transferindo
assim o controle para a cláusula > switch (expressao){
encontrada e em seguida executando > case valor1:
as instruções associadas. Caso nenhum > //Instrução executada
caso seja correspondido, então o > break
programa procura pela cláusula > case valor2:
opcional default, que, se encontrado, > //Instrução executada
tem o controle transferido à ele, > break
executando suas instruções associadas. > case valorN:
Se não houver uma cláusula default, o > //Instrução executada
programa continua a execução da > break
instrução seguindo para o final do > default:
switch. Por convenção, a cláusula > //Instrução executada
default é a última, mas não é algo > break
obrigatório. >}
OPERADORES LÓGICOS
AND (&&) Traduza, para o português mesmo:
Unimos mais de uma expressão, usando
And, em inglês, significa "E". Exemplo: o operador ||.
isso e aquilo.
> if(condicao1 OU condicao2){
Ele funciona da seguinte maneira: > código;
Unimos mais de uma expressão, usando >}
o operador &&. Exemplo:
Se a condição1 OU condição2 for
> if(condicao1 && condicao2){ verdadeira, todo o teste condicional
> código; será verdadeiro.
>}
Se um for falso e o outro for verdade,
Agora, esse IF só será verdadeiro se a o resultado é verdade (true).
condição1 for verdadeira E a condição2
TAMBÉM for verdadeira. Se qualquer Tabela Verdade: OR ||
uma delas for falsa, todo o teste
condicional será falso. Condição 1 || Condição 2 Resultado
Verdade || Verdade Verdade
Não existem limites para o tanto de Verdade || Falso Verdade
testes que podemos usar com o Falso || Verdade Verdade
Falso || Falso Falso
operador &&:

> if(cond1 && cond2 && cond3 &&...){


NOT (!)
> código;
>}
NOT em inglês significa não, é a
negação.
Tabela Verdade: AND &&

Sempre que colocamos esse operador


Condição 1 && Condição 2 Resultado
perto de alguma condição, ele altera o
Verdade && Verdade Verdade
Verdade && Falso Falso valor dela de verdadeiro para falso(true
Falso && Verdade Falso para false) ou o contrário, de falso para
Falso && Falso Falso verdadeiro. Veja:

> if(true){
OR (||) > console.log("esse código sempre executa")
> }
> if(!true){
OR em inglês significa OU. A sintaxe
> console.log("esse código nunca executa")
para usar o operador || é: Unimos mais > }
de uma expressão, usando o operador
||.

> if(condicao1 || condicao2){


> código;
>}
LAÇOS DE REPETIÇÃO
Em JavaScript temos os seguintes Primeiro vamos imprimir os 10 itens
laços de repetição: while, do… while, for, no console do navegador para
for… in e o for… of. Todos servem o entender o uso do while.
mesmo objetivo, mas possuem algumas
características que os diferem e Escreva o seguinte código no console:
existem para uma necessidade durante
const quantidadeDeUsuarios = usuario.length
a execução dos nossos programas.
let contador = 0

WHILE while(contador < quantidadeDeUsuarios){


console.log(
usuarios[contador].nome, usuarios[contador].idade
O loop while existe para dizermos ao )
computador: “enquanto algo, faça isso”. contador++;
}

A sintaxe do while é a seguinte:

> while (condição){ Perceba que existe uma condição


> faça algo para o corpo do loop while continuar
>} sendo executado: enquanto contador <
quantidadeDeUsuarios, faça imprimir o
nome e idade do usuário (console.log…)
Para exemplificar, vamos imaginar
e, por fim, somar mais um ao contador
que queremos criar uma pequena
(contador++).
tabela que exibe os usuários que temos
cadastrados em um sistema.
O ++ é um operador de incremento
que adiciona + 1 ao valor da nossa
Temos o seguinte array de usuários:
variável e reatribui o valor da soma a
ela. Seria o mesmo que fazer:
const usuarios = [
{nome: "Robinson", idade: "18"},
let contador = 0;
{nome: "Janaina", idade: "28"},
contador = contador + 1;
{nome: "Carlos", idade: "19"},
{nome: "Roberto", idade: "25"},
Também podemos fazer o mesmo
{nome: "Maria", idade: "32"},
para operações de decremento, com o -
{nome: "Marta", idade: "30"},
- (contador--).
{nome: "Danilo", idade: "27"},
{nome: "Thiago", idade: "18"}, Quando rodamos nossa página,
{nome: "Wagner", idade: "22"}, vemos o seguinte retorno no console do
{nome: "Daniel", idade: "27"}, navegador:
{nome: "Ana", idade: "30"}
] Robinson 18
Janaina 28
*Copie este código e cole no console Carlos 19
Roberto 25
do seu navegador.
Maria 32
Marta 30
Temos agora uma lista com 10 Danilo 27
usuários que estão cadastrados em Thiago 18
nosso sistema. Wagner 22
Daniel 27
Ana 30
Isso acontece porque, a cada entrada Poderíamos também fazer o
do nosso while, o contador está valendo contrário e decrementar um valor ao
um novo valor e nós pegamos o dado invés de incrementar e então nem
de dentro do array com a sintaxe precisaríamos da verificação. Podemos
array[indice]. somente dizer que temos 10
usuários/registros dentro do nosso array
Para cada iteração no nosso array e decrementar sobre isso e nosso
(cada vez que o loop volta a acessar o código fica mais simples.
próximo item do array utilizando o
novo valor do contador), temos algo let quantidadeDeUsuarios = usuarios.length
como:
while(quantidadeDeUsuarios){
const indice = quantidadeDeUsuarios - 1
usuarios[0] console.log(usuarios[indice].nome)
console.log(usuarios[indice].idade)
Retorna {nome: “Robinson”, idade: 18}. quantidadeDeUsuarios --;
E então podemos acessar a chave de }
dentro deste objeto. Podemos buscar
nome e idade assim: Copie este código e cole no console do
seu navegador e execute para analisar
usuarios[0].nome o que acontece.
usuarios[0].idade
Perceba que temos que fazer um
O que acontece em nosso loop é o controle do nosso contador const
seguinte: indice = quantidadeDeUsuarios - 1.
Precisamos fazer isso porque
usuarios.length retorna 10, mas para
while(0 < 10){ acessar o último item do nosso array
console.log(usuarios[0].nome) (de 10 posições) nós precisamos usar o
console.log(usuarios[0].idade) número 9, pois sabemos que o índice
} para acessar as posições dos arrays
while(1 < 10){ começa em 0. Então não existe um
console.log(usuarios[1].nome) item na posição 10, somente na posição
9.
console.log(usuarios[1].idade)
}
O while para quando
while(2 < 10){
quantidadeDeUsuarios chega a 0
console.log(usuarios[2].nome)
porque 0 é considerado um valor falso.
console.log(usuarios[2].idade)
Um valor que pode ser considerado
}
falso quando necessário uma
comparação booleana.
Até que a condição para entrar no
loop seja false (10 < 10), então a
Veja:
repetição acaba.
Se fizermos:
Se nós não colocarmos uma
expressão de controle (neste caso, 0 == true
nosso contador que é incrementado a
cada repetição), a nossa condição Ou, se fizermos:
nunca será atendida e vamos cair em
um loop infinito! Isso pode fazer o 1 == true
navegador ou sistema operacional
travar.
A comparação simples (==) irá Se acessar o array, temos agora algo
retornar true para 1 e false para 0. assim:

Neste exemplo só temos um [5, 4, 3, 2, 1, 0]


problema de implementação: quando
imprimimos o valor na primeira vez, Então vamos inverter nosso array
incrementando o contador, tivemos a antes de iterar sobre e fazer com que
posição exata dos registros do array. nosso console.log imprima o que
realmente queremos.
Robinson 18
Janaína 28 Na linha onde pegamos a quantidade
Carlos 19
de usuários, vamos utilizar o método
Roberto 25
reverse e logo depois pegar a
Maria 32
Marta 30 quantidade de itens dentro da lista.
Danilo 27
let quantidadeDeUsuarios = usuarios.reverse().length;
Thiago 18
Wagner 22
Daniel 27 Aqui vemos algo legal da linguagem
Ana 30 JavaScript, podemos encadear métodos
dos nossos objetos. Fizemos .reverse() e
.length um após o outro e temos o
Agora temos o resultado invertido: resultado esperado. Primeiro o array é
reordenado e em seguida pegamos a
Ana 30 quantidade de itens que temos na lista.
Daniel 27
Wagner 22
Faça essa alteração no console do
Thiago 18
navegador.
Danilo 27
Marta 30
Maria 32 DO..WHILE
Roberto 25
Carlos 19 Além de aprender a utilizar o while
Janaína 28 acima, aprendemos mais comandos
Robinson 18 legais, como o reverse e também a
acessar valores de objetos dentro de
Isso acontece porque, na primeira arrays. Estamos progredindo bastante
vez, começamos iterar o array do 0 até em nossa estrada rumo a lógica de
a última posição, mas na segunda vez programação!
começamos da última posição até o 0.
Para resolver isso utilizamos um Existe uma variação do while que
método de array chamado reverse. poderemos precisar em algum
momento de nossas vidas. O while
A sintaxe do reverse é: executa caso uma condição seja
atendida, mas se ela não for atendida,
array.reverse(); pelo menos uma vez, o while nunca é
executado.
Ele pega uma cadeia de registros e
muda suas posições. Por exemplo:

Exemplo: Imagina que estamos executando


uma rotina que imprime os valores de
let meuArray = [0, 1, 2, 3, 4, 5] dentro de um contador, mas não
meuArray.reverse(); queremos que apareça o número zero
no console.
let contador = 0 const quantidadeDeUsuarios = usuarios.length;
while(contador > 1 && contador < 10){ for(let i = 0; i < quantidadeDeUsuarios; i++) {
console.log(usuarios[i].nome)
console.log(contador)
console.log(usuarios[i].idade)
contador ++
}
}
Estamos guardando o valor da
Como o nosso contador começa com quantidade de usuários que temos
zero, nossa condição nunca é atendida dentro do nosso array com o .length e
e não entra no laço de repetição. Para em seguida utilizamos ela na
isso, então, utilizamos o do.. while. condicional do nosso laço.

O do… while executa pelo menos uma Perceba que criamos uma variável
vez e então entra no laço while. dentro da expressão do laço (let i = 0),
adicionamos a condição (i <
let contador = 0 quantidadeDeUsuarios) e em seguida
do{ somamos mais um a nossa variável de
contador++; controle (i++).
console.log(contador)
}while(contador < 10) Execute esse código no seu
navegador e veja o que acontece.
FOR
Temos, dentro do corpo do laço o
A sintaxe do for é a seguinte: acesso ao valor do nosso identificador i,
por isso podemos dizer que: dentro do
for(inicialização, condição, iteração) { array usuarios, na posição i, imprima a
faça... chave nome do objeto que temos nessa
} posição (usuarios[i].nome).

O for é um loop mais simples que o FOR… IN


while. O while é algo muito poderoso,
porém mais utilizado quando O for…in e o for…of, que aprenderemos
queremos fazer algo recursivo. Perceba abaixo, vão parecer extremamente mais
que, num laço for, já temos uma bonitos depois que você conheceu o
inicialização de uma variável de for.
controle e a iteração obrigatória, o que
garante certa “segurança” na repetição, A sintaxe do for…in é a seguinte:
visto que no while podemos esquecer
de fazer isso. for(let variavel in objeto){
faça..
Vamos continuar com nosso exemplo }
de dados de usuários de um sistema,
que utilizamos no while. Legal, não? Não precisamos inicializar
um identificador para controlar o fluxo
Vamos iterar sobre esse array, de repetição e nem iterar sobre isso. A
utilizando o for e imprimir no console própria linguagem se encarrega de
do navegador cada vez que o corpo do saber quantos itens existem dentro do
nosso laço de repetição for executado objeto a ser iterado e, com base nisso,
com o console.log(). repete até que essa lista de itens seja
toda percorrida.
Pressione o F12 ou CTRL+C para abrir o
Vamos imprimir a nossa lista de
console do seu navegador.
usuários de novo, agora com o for…in:
for(let item in usuarios){ for(let item of usuarios){
console.log(usuarios[item].nome) console.log(item.nome)
console.log(usuarios[item].idade) console.log(item.idade)
} }

Nós estamos dizendo o seguinte: Repare que não temos que dizer que
para item dentro do nosso array vamos imprimir o objeto[item].chave,
usuários, imprima o nome da chave basta pedir que o JavaScript imprime
item dentro de usuarios. no console o item.chave, isso porque a
criação da variável item é igual a
Nós podemos iterar sobre objetos receber o valor do item que está dentro
ou arrays utilizando o for…in. do nosso objeto no momento de sua
criação.
FOR… OF
Seria o mesmo que fazer algo assim:
O for…of é o laço mais bonito já
inventado pelos artistas da
modernidade, os desenvolvedores que let usuario1 = usuarios[1]
escrevem as linguagens de let usuario2 = usuarios[2]
programação, na minha opinião. let usuario3 = usuarios[3]
let usuario4 = usuarios[4]
Eu acho sua sintaxe clara e o acesso let usuario5 = usuarios[5]
aos dados é mais explícito dentro do let usuario6 = usuarios[6]
corpo do laço.

A sintaxe do for…of é: E cada variável recebeu um objeto


com as chaves nome e idade
for(let variavel of objeto){ (usuario1.nome, usuario1.idade), mas
faça.. não precisamos fazer isso graças ao
} poder do for…in que já executa este
trabalho por baixo dos panos.
Muito parecido com o for…in, não é?

A grande diferença será agora, no


acesso aos dados que acabamos de
extrair de objeto. Confira o exemplo
sobre o nosso array de usuários.
ARRAYS E OBJETOS
Arrays em JavaScript são usados importantes. Uma declaração pode
para armazenar vários valores em uma abranger várias linhas:
única variável.
var carro = [
Exemplo: "Volvo",
"BMW",
var carro = ["Volvo", "BMW", "Fiat"] "Fiat"
]
O que é um Array?
Usando novos Arrays no JavaScript
Um Array é uma variável especial ,
que pode conter mais de um valor por O exemplo a seguir também cria um
vez. Array e atribui valores a ela:

var carros = new Array("Volto", "BMW", "Fiat")


Se você tem uma lista de itens (uma
lista de nomes de carros, por exemplo),
Os dois exemplos acima fazem
armazenar os carros em variáveis
exatamente o mesmo. Não é necessário
individuais pode ser assim:
usar o novo Array() . Por simplicidade,
legibilidade e velocidade de execução,
var carro1 = "Volto"
use o primeiro (método literal do
var carro2 = "BMW"
Array).
var carro3 = "Fiat"

No entanto, e se você quiser percorrer


Acesse os elementos de um Array
os carros e encontrar um específico? E
se você não tivesse 3 carros, mais 300?
Você se refere a um elemento do
Array referente ao número de índice.
A solução é um Array!
Esta declaração acessa o valor do
primeiro elemento em carros:
Um Array pode armazenar muitos
valores com um único nome , e você var name = carros[0]
pode acessar os valores consultando
um número de índice. Esta declaração modifica o primeiro
elemento em carros:
Criando um Array
carros[0] = "Opel"
Usar um Array literalmente é a
maneira mais fácil de criar um Array de Exemplo:
JavaScript.
var carros = ["Volvo", "BMW", "Fiat"]
var array_nome = [item1, item2, ...] document.getElementById("demo").innerHTML = carros[0]

Exemplo: [0] é o primeiro elemento em um Array.


[1] é o segundo. Os índices do Array
var carro = ["Volvo", "BMW", "Fiat"] começam com 0.

Espaços e quebras de linha não são Acessando um Array completo


Com o JavaScript, é possível acessar a Você pode ter objetos em um Array.
matriz completa consultando o nome Você pode ter funções em um Array.
do Array: Você pode ter Arrays em um Array:

var carros = ["Volvo", "BMW", "Fiat"] myArray[0] = Date.now;


document.getElementById("demo").innerHTML = carros
myArray[1] = myFunction;
myArray[2] = myCarros;
Arrays são objetos
Propriedade e Métodos do Array
Arrays são um tipo especial de
objetos . O tipo de operador em
A força real dos Arrays de JavaScript
JavaScript retorna "objeto" para arrays.
são as propriedades e métodos do Array
Mas, os arrays de JavaScript são melhor
incorporada:
descritos como arrays.
var x = carros.length;
Arrays usam números para acessar var y = carros.sort();
seus "elementos" . Neste exemplo, a
pessoa[0] retorna Carlos:
Os métodos do Array são abordados
nos próximos capítulos.
var pessoa = ["Carlos", "Silva", 46]
A Propriedade length
Os objetos usam nomes para acessar
seus "membros". Neste exemplo,
A propriedade length de um Array
pessoa.primeiroNome retorna Carlos:
retorna o comprimento de um Array (o
número de elementos do Array).
var pessoa = {
primeiroNome: "Carlos",
var frutas = ["Banana", "Maçã", "Manga"]
ultimoNome: "Silva",
frutas.length;
idade: 46
}
A propriedade length é sempre mais
do que o índice do Array mais alto.
Elementos do Array podem ser objetos

As variáveis de JavaScript podem ser


objetos. Arrays são tipos especiais de
objetos. Por isso, você pode ter variáveis
de diferentes tipos no mesmo Array.
FUNÇÕES
Funções são blocos de construção Se você passar um objeto (ou seja,
fundamentais em JavaScript. Uma um valor não primitivo (en-US), tal
função é um procedimento de como Array ou um objeto definido por
JavaScript - um conjunto de instruções você) como um parâmetro e a função
que executa uma tarefa ou calcula um alterar as propriedades do objeto, essa
valor. Para usar uma função, você deve mudança é visível fora da função,
defini-la em algum lugar no escopo do conforme mostrado no exemplo a
qual você quiser chamá-la. seguir:

function minhaFuncao(objeto) {
Declarando uma função
objeto.make = "Toyota";
}
A definição da função (também
chamada de declaração de função) var meucarro = {make: "Honda", model: "Accord",
consiste no uso da palavra chave year: 1998};
var x, y;
function (en-US), seguida por:
x = meucarro.make;
Nome da Função.
Lista de argumentos para a função, minhaFuncao(meucarro);
entre parênteses e separados por y = meucarro.make;
vírgulas.
Declarações JavaScript que definem Expressão de função
a função, entre chaves { }.
Embora a declaração de função acima
Por exemplo, o código a seguir define seja sintaticamente uma declaração,
uma função simples chamada square: funções também podem ser criadas por
uma expressão de função. Tal função
function square(numero){ pode ser anônima; ele não tem que ter
return numero * numero; um nome. Por exemplo, a função
} square poderia ter sido definida como:

var square = function(numero) {return numero * numero};


A função square recebe um var x = square(4) //x recebe o valor 16

argumento chamado numero. A função


consiste em uma instrução que indica No entanto, um nome pode ser
para retornar o argumento da função fornecido com uma expressão de
(isto é, numero) multiplicado por si função e pode ser utilizado no interior
mesmo. A declaração return (en-US) da função para se referir a si mesma, ou
especifica o valor retornado pela em um debugger para identificar a
função. função em stack traces:

var fatorial = function fac(n) {return n<2 ? 1 : n*fac(n-1)};


return numero * numero;
console.log(fatorial(3));

Parâmetros primitivos (como um As expressões de função são


número) são passados para as funções convenientes ao passar uma função
por valor; o valor é passado para a como um argumento para outra
função, mas se a função altera o valor função. O exemplo a seguir mostra uma
do parâmetro, esta mudança não função map sendo definida e, em
reflete globalmente ou na função seguida, chamada com uma função
chamada. anônima como seu primeiro parâmetro:
function map(f,a) {
var result = []; // Cria um novo Array
var i;
for (i = 0; i != a.length; i++)
result[i] = f(a[i]);
return result;
}

O código a seguir:

map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);

retorna [0, 1, 8, 125, 1000].

Em JavaScript, uma função pode ser


definida com base numa condição. Por
exemplo, a seguinte definição de
função define minhaFuncao somente
se num é igual a 0:

var minhaFuncao;
if (num == 0){
minhaFuncao = function(objeto) {
objeto.make = "Toyota"
}
}

Além de definir funções, você também


pode usar o construtor Function para
criar funções a partir de uma string em
tempo real, como no método eval().

Você também pode gostar