Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1
DESENVOLVIMENTO 
WEB FRONT-END
Prof. Me. João Victor da Silva Alves
2
DESENVOLVIMENTO WEB FRONT-END
PROF. ME. JOÃO VICTOR DA SILVA ALVES
3
 Diretor Geral: Prof. Esp. Valdir Henrique Valério
 Diretor Executivo: Prof. Dr. William José Ferreira
 Ger. do Núcleo de Educação a Distância: Profa Esp. Cristiane Lelis dos Santos
Coord. Pedag. da Equipe Multidisciplinar: Profa. Esp. Gilvânia Barcelos Dias Teixeira
 Revisão Gramatical e Ortográfica: Profa. Me. Renata Ribeiro F. Fusilli
 Revisão Técnica: Profª. Drª. Suelen Martins
 Revisão/Diagramação/Estruturação: Clarice Virgilio Gomes
 Fernanda Cristine Barbosa
 Prof. Esp. Guilherme Prado
 
 Design: Bárbara Carla Amorim O. Silva 
 Daniel Guadalupe Reis
 Élen Cristina Teixeira Oliveira 
 Maria Eliza P. Campos
 Victor L. dos Reis Lopes 
© 2022, Faculdade Única.
 
Este livro ou parte dele não podem ser reproduzidos por qualquer meio sem Autoriza-
ção escrita do Editor.
Ficha catalográfica elaborada pela bibliotecária Melina Lacerda Vaz CRB – 6/2920.
4
PRÁTICAS DE ENSINO DE LÍNGUA 
PORTUGUESA 
1° edição
Ipatinga, MG
Faculdade Única
2022
5
Doutorando do Programa de Pós-Graduação 
em Ciência da Computação (PPGCO) na 
FACOM/UFU. Mestre em Gestão Organizacional 
pela Faculdade de Gestão e Negócios (FAGEN) 
da Universidade Federal de Uberlândia (UFU). 
Especialista em Administração Pública pela 
Universidade Candido Mendes (UCAM). 
Especialista em Gestão em Tecnologia da 
Informação pela Faculdade Única de Ipatinga. 
Bacharel em Sistemas de Informação pela 
Universidade Federal de Uberlândia (UFU). Tem 
ampla experiência na área de Informática, com 
ênfase em ambientes virtuais de aprendizagem 
(AVA's), atuando principalmente no suporte a 
cursos EAD e tecnologia da informação. É servidor 
público na UFU, ocupando o cargo de Analista 
de Tecnologia da Informação na Faculdade 
de Computação (FACOM). Possui ampla 
experiência como tutor presencial e a distância 
de cursos de Graduação, Pós-graduação, 
Aperfeiçoamento e Extensão. Também tem 
atuado como Professor Conteudista de cursos 
EaD em várias Instituições de Ensino Superior 
(IES).
JOÃO VICTOR DA SILVA ALVES
Para saber mais sobre a autora desta obra e suas qualificações, 
acesse seu Curriculo Lattes pelo link :
http://lattes.cnpq.br/8045357358577883
Ou aponte uma câmera para o QRCODE ao lado.
6
LEGENDA DE
Ícones
Trata-se dos conceitos, definições e informações importantes nas 
quais você precisa ficar atento.
Com o intuito de facilitar o seu estudo e uma melhor compreensão do 
conteúdo aplicado ao longo do livro didático, você irá encontrar ícones 
ao lado dos textos. Eles são para chamar a sua atenção para determinado 
trecho do conteúdo, cada um com uma função específica, mostradas a 
seguir:
São opções de links de vídeos, artigos, sites ou livros da biblioteca 
virtual, relacionados ao conteúdo apresentado no livro.
Espaço para reflexão sobre questões citadas em cada unidade, 
associando-os a suas ações.
Atividades de multipla escolha para ajudar na fixação dos 
conteúdos abordados no livro.
Apresentação dos significados de um determinado termo ou 
palavras mostradas no decorrer do livro.
 
 
 
FIQUE ATENTO
BUSQUE POR MAIS
VAMOS PENSAR?
FIXANDO O CONTEÚDO
GLOSSÁRIO
7
UNIDADE 1
UNIDADE 2
SUMÁRIO
1.1 Fundamentos e elementos básicos da linguagem ...............................................................................................................................................................................................10
1.2 Sintaxe ...................................................................................................................................................................................................................................................................................................11
1.3 Tipos de dados , variáveis e operadores ........................................................................................................................................................................................................................15
1.4 Criando o primeiro script ........................................................................................................................................................................................................................................................15
FIXANDO O CONTEÚDO ................................................................................................................................................................................................................................................................18
2.1 Funções ...............................................................................................................................................................................................................................................................................................21
2.2 Vetores ................................................................................................................................................................................................................................................................................................23
2.3 Objetos ..............................................................................................................................................................................................................................................................................................24
2.4 Exemplos ..........................................................................................................................................................................................................................................................................................25
FIXANDO O CONTEÚDO ...............................................................................................................................................................................................................................................................30
A LINGUAGEM JAVASCRIPT
EXPRESSÕES E COMANDOS
UNIDADE 3
3.1 Estruturas de Repetição ..........................................................................................................................................................................................................................................................33
3.2 Estruturas de Sequência .......................................................................................................................................................................................................................................................35
3.3 Exemplos ..........................................................................................................................................................................................................................................................................................37
FIXANDO O CONTEÚDO ...............................................................................................................................................................................................................................................................43
ESTRUTURAS DE CONTROLE DE FLUXO
UNIDADE 4
4.1 Introdução ao DOM ...................................................................................................................................................................................................................................................................47
4.2 Eventos DOM ................................................................................................................................................................................................................................................................................484.3 Exemplos ...........................................................................................................................................................................................................................................................................................51
FIXANDO O CONTEÚDO ................................................................................................................................................................................................................................................................55
DOCUMENT OBJECT MODEL (DOM)
5.1 Objetos, Atributos e Métodos ..............................................................................................................................................................................................................................................58
5.2 Getters/Setters ..............................................................................................................................................................................................................................................................................58
5.3 Classes ................................................................................................................................................................................................................................................................................................59
5.4 Herança ..............................................................................................................................................................................................................................................................................................61
FIXANDO O CONTEÚDO ...............................................................................................................................................................................................................................................................63
JAVASCRIPT ORIENTADA A OBJETOS
UNIDADE 5
6.1 Angular ...............................................................................................................................................................................................................................................................................................66
6.2 Vue ........................................................................................................................................................................................................................................................................................................69
6.3 React ....................................................................................................................................................................................................................................................................................................71
6.4 Exemplo de projeto com React .........................................................................................................................................................................................................................................71
FIXANDO O CONTEÚDO ................................................................................................................................................................................................................................................................73
RESPOSTAS DO FIXANDO O CONTEÚDO ......................................................................................................................................................................................................................75
REFERÊNCIAS ......................................................................................................................................................................................................................................................................................76
FRAMEWORKS FRONT-END PARA DESENVOLVIMENTO WEB
UNIDADE 6
8
O
N
FI
R
A
 N
O
 L
I
C
V
R
O
UNIDADE 1
A unidade I apresenta a linguagem JavaScript, destacando seus fundamentos e 
elementos básicos. São enfatizados a sintaxe, os tipos de dados, variáveis e operadores, 
bem como a criação do primeiro script utilizando a linguagem.
UNIDADE 2
A unidade II explora as expressões e comandos da linguagem JavaScript. Nesse 
sentido, são apresentadas as funções, os vetores e a criação e utilização de objetos.
UNIDADE 3
O foco da unidade III são as estruturas de controle de fluxo do JavaScript. As estruturas 
de repetição e de sequência são apresentadas e definidas através de exemplos 
práticos na linguagem.
UNIDADE 4
A unidade IV explora o Document Object Model (DOM), um conceito fundamental em 
JavaScript. São enfatizados os eventos do DOM e sua utilização no desenvolvimento 
front-end atual através de exemplos práticos.
UNIDADE 5
A unidade V apresenta a utilização da linguagem JavaScript com o conhecido 
paradigma orientado a objetos. São definidos os conceitos de objetos, atributos, 
métodos e classes. São apresentados os métodos básicos getters e setters, bem 
como a definição de herança.
UNIDADE 6
A unidade VI enfatiza a utilização de frameworks front-end no desenvolvimento web 
moderno. O foco é dado ao React com um projeto básico utilizando a ferramenta. Os 
frameworks Angular e Vue também são apresentados.
9
A LINGUAGEM 
JAVASCRIPT
10
 O desenvolvimento de conteúdo para a web avançou significativamente 
em termos de interatividade e sofisticação. Sites compostos por páginas estáticas 
não são mais suficientes para gerar a interação que os usuários tanto necessitam. 
Assim, a necessidade de construção de conteúdo dinâmico se tornou uma realidade 
preponderante para os profissionais de webdesign, exigindo constante atualização e 
reciclagem nas metodologias de desenvolvimento desses atores.
 Nesse cenário, surgiram linguagens de programação robustas e ricas em 
componentes que adicionam interatividade e dinamismo às páginas web. Dentre elas, 
sem dúvida, JavaScript se destaca. Sua grande capacidade de adicionar componentes 
de interação com o usuário e conteúdo dinâmico aos componentes dos sites modernos, 
atraiu fortemente a atenção dos webdesigners (ZANETTI, 2020).
 JavaScript “é a linguagem de programação da Web”, sendo usada pela maioria 
dos sites e portais modernos (FLANAGAN, 2013, p. 18). Ademais, quase a totalidade dos 
navegadores de internet atuais implementam e suportam JavaScript. Em conjunto com 
HTML e CSS, JavaScript forma a tríade que todo desenvolvedor web contemporâneo 
precisa conhecer e dominar muito bem (FLANAGAN, 2013). Mais especificamente, 
na presente data, o cerne do desenvolvimento web se concentra no HTML5, CSS3 e 
JavaScript.
 JavaScript é uma linguagem de programação de “alto nível, dinâmica, interpretada 
e não tipada” (FLANAGAN, 2013, p. 18). Ser interpretada significa que não precisa passar 
por rotinas de compilação e depuração, como Java e C, por exemplo. Ser não tipada 
significa que JavaScript “não apresenta tipos de dados, isto é, qualquer variável definida 
é do tipo variante”. Assim, “o tipo de dados é definido de acordo com a informação 
armazenada naquele momento”, podendo ser também “modificado ao longo da 
execução da aplicação, conforme seu conteúdo é alterado” (ZANETTI, 2020, p. 45). Na 
seção destinada a variáveis e tipos de dados, isso será melhor explicado.
 A sintaxe de JavaScript deriva da linguagem Java, o que contribuiu fortemente 
para o surgimento do seu nome. Porém, JavaScript se diferencia muito de Java, tanto 
estruturalmente quanto em diversos outros aspectos.
 De fato, JavaScript não nasceu com esse nome. A linguagem foi registrada como 
ECMAScript pela extinta Netscape. No entanto, o nome JavaScript se popularizou entre 
os desenvolvedores, de modo que é raro se referirem à linguagem como ECMAScript,seu nome técnico real. ECMAScript já está na versão ECMA-262 de junho de 2022.
1.1 FUNDAMENTOS E ELEMENTOS BÁSICOS DA LINGUAGEM1.1 FUNDAMENTOS E ELEMENTOS BÁSICOS DA LINGUAGEM
 É importante salientar que o foco aqui é o desenvolvimento web com 
JavaScript no contexto front-end, ou seja, no contexto da construção de conteúdo 
que é apresentado aos usuários dos navegadores de internet. Dessa forma, a ênfase é 
Conheça a história dos nomes e versões da linguagem JavaScript no quadro que 
aparece na página 19 do livro JavaScript: o guia definitivo de David Flanagan, 
disponível na Minha Biblioteca Única. Disponível em: https://bit.ly/400WEjn.
Acesso 24 jan 2023
BUSQUE POR MAIS
11
1.2 SINTAXE1.2 SINTAXE
 O primeiro passo para o aprendizado de qualquer linguagem de programação é 
compreender sua sintaxe. Nesse sentido, a sintaxe “nada mais é do que um conjunto 
de regras elementares que determinam o modo de escrever programas” na linguagem 
escolhida (SEGURADO, 2016, p. 67). A sintaxe da linguagem determina regras para nomes 
de variáveis, comandos e instruções, estruturas de blocos, fluxos, comentários etc.
 Em JavaScript os programas são escritos em praticamente qualquer idioma, pois 
a linguagem utiliza o conjunto de caracteres Unicode (SEGURADO, 2016). Uma regra 
importante diz que a linguagem é case sensitive, isto é, diferencia letras minúsculas 
de maiúsculas. Isso significa que, por exemplo, o nome de variável soma é diferente de 
Soma ou SOMA. Assim, é importante o desenvolvedor utilizar um padrão ao criar seus 
programas, não misturando estilos diferentes de caracteres.
 Via de regra, o desenvolvedor pode utilizar livremente espaços em branco, 
tabulação e saltos de linha. Porém, é importante citar que os programadores de uma 
determinada linguagem procuram padronizar o estilo do código, a fim de gerar mais 
clareza e legibilidade para fins de estudo e reutilização de código.
 Como parte do aprendizado da sintaxe, agora é fundamental entender as regras 
de JavaScript para a declaração e uso de tipos de dados, variáveis e operadores. As seções 
seguintes detalham esses assuntos.
As convenções de codificação da linguagem JavaScript podem ser estudadas 
no site w3schools. Disponível em: https://bit.ly/3Deg22F.Acesso 24 jan 2023
BUSQUE POR MAIS
dada aos componentes de JavaScript que proporcionam dinamismo às páginas web e 
interatividade do “lado do cliente”, isto é, dos utilizadores dos navegadores web.
 Outro ponto fundamental a se destacar é que, no aprendizado de qualquer 
linguagem de programação, a prática é essencial. Não se aprende uma nova linguagem 
computacional apenas lendo a teoria e observando os códigos fornecidos como 
exemplos. Aprender a desenvolver com JavaScript não foge a essa regra. Assim, teste 
os exemplos, modifique-os e teste novamente. Visto que a maioria dos navegadores de 
internet modernos já implementam JavaScript, para praticar os exemplos apresentados 
aqui você precisará apenas de um navegador atual de sua preferência e de um editor de 
textos.
1.3 TIPOS DE DADOS, VARIÁVEIS E OPERADORES1.3 TIPOS DE DADOS, VARIÁVEIS E OPERADORES
 Assim como toda linguagem de programação, JavaScript define um conjunto de 
tipos de dados e regras a serem seguidas na sua utilização. Porém, antes de adentrar 
nesse assunto, é importante definir a utilização de comentários nos códigos escritos 
em JavaScript. Semelhante à maioria das linguagens computacionais, dois estilos de 
12
comentários são aceitos em JavaScript:
 1. Comentário em uma única linha: começa com //
 2. Comentário de bloco, ou seja, de mais de uma linha: o texto deve estar entre os 
caracteres /* e */
 Uma vez identificados no código, os comentários são automaticamente ignorados, 
ou seja, não são considerados pelo interpretador JavaScript como instruções a serem 
computadas. Veja exemplos de comentários em JavaScript a seguir:
 // Aqui está um comentário simples, de apenas uma linha.
 /* Aqui é possível observar o comentário múltiplo, isto é, de mais de uma linha.
 Nessa linha, ainda continua o comentário de bloco.
 Agora o comentário no código finaliza com o fechamento do bloco.
 */
 Comentários são muito úteis e fortemente recomendados durante a codificação 
em qualquer linguagem de programação. Eles são muito úteis para explicar o programa 
e identificar as intenções e lógica de programação usadas pelo desenvolvedor do 
mesmo. São muito mais úteis ainda quando o projeto envolve vários desenvolvedores, 
onde cada um é responsável por parte do código e funcionalidades separadas. Os 
comentários ajudarão o time a entender o que está sendo feito, o que já foi feito e o 
que ainda precisa ser implementado. Os comentários serão muito úteis também para o 
próprio programador quando precisar voltar a um programa depois de decorrido algum 
tempo.
 Durante os exemplos mostrados nas unidades deste livro, os comentários serão 
utilizados para explicar as instruções presentes nos códigos, de modo a facilitar o seu 
aprendizado. Assim, é importante se atentar aos comentários, tanto de linha única 
quanto de bloco.
 Isto posto, é importante agora definir os tipos de dados de JavaScript. Conforme 
citado por Flanagan (2013, p. 46), “uma das características mais fundamentais de uma 
linguagem de programação é o conjunto de tipos que ela aceita”.
 JavaScript possui duas categorias de tipos de dados: primitivos e de objeto. Na 
categoria dos tipos primitivos aparecem os números, os textos (cadeias de caracteres 
chamadas de strings) e valores booleanos (verdadeiro ou falso). Os tipos de dados da 
categoria objeto serão detalhados na seção sobre JavaScript orientada a objetos.
 As informações manipuladas pelos programas precisam, de alguma maneira, 
ser mantidas e armazenadas. Para isso, são utilizadas as variáveis. Uma variável “define 
um nome simbólico para um valor e permite que o valor seja referido pelo nome” 
(FLANAGAN, 2013, p. 46). Nesse sentido, uma variavél declarada no código em JavaScript 
assumirá o tipo de dado interpretado dinamicamente pela linguagem, caso não seja 
explicitado diretamente pelo programador. Essa característica faz JavaScript ser definida 
como uma linguagem de tipagem dinâmica ou, também, de tipagem fraca. O quadro a 
seguir, apresenta os 7 tipos de dados primitivos definidos na última versão da linguagem 
JavaScript (ECMAScript 2022).
Tipo Exemplo
number let a = 15; // o número inteiro quinze
let b = 1.5; // o número real um ponto cinco
let pi = 3.14; // o número real três ponto quatorze
boolean let andar = True; // valor verdadeiro
let correr = False; // valor falso
13
string let p = “JavaScript”; // uma palavra simples
let f = “ECMAScript versão 2022”; // uma frase
bigint let num = 8901234567890n; // para números muito grandes
null let n = null; //Indica um objeto vazio, nulo, ainda sem referência
undefined let n; // a variável foi declarada mas não foi inicializada
symbol let s = Symbol(“chave”); // usado geralmente para armazenar um valor único
Quadro 1: Tipos de dados primitivos em JavaScript
Fonte: Elaborado pelo autor (2022).
Quadro 2: Palavras reservadas do JavaScript
Fonte: Segurado (2016, p. 69).
 Do Quadro 1 é possível obter muitas informações acerca de tipos de dados e 
variáveis em JavaScript:
 ● A palavra reservada let é utilizada na declaração de uma variável. É possível 
também declarar variáveis com a palavra reservada var, porém, é menos 
recomendado (MDN, 2022);
 ● O sinal de = é utilizado para atribuir um valor a uma determinada variável;
 ● Toda instrução em JavaScript deve terminar com ; (ponto e vírgula), inclusive 
declarações de variáveis. Embora essa não seja uma regra rígida, é fortemente 
recomendado que seja seguida, pois é considerada uma boa prática de 
codificação pelos grupos de desenvolvedores em JavaScript, além de evitar 
possíveis efeitos colaterais no fluxo do código.
 A lista completa das palavras reservadas pelo JavaScript pode ser vista na página 
24 de Flanagan (2013).Ademais, em JavaScript o desenvolvedor é livre para utilizar qualquer nome ou 
rótulo para uma variável, atentando às seguintes restrições, conforme citado em MDN 
(2022):
 Outro ponto muito importante visto no Quadro 1 é que JavaScript possui 
várias palavras especiais reservadas. Essas não podem ser utilizadas livremente pelos 
desenvolvedores. Além das palavras reservadas mostradas no Quadro 1, o Quadro 2 
sintetiza a maioria dos identificadores reservados pela linguagem:
break delete function return typeof
case do if switch var
catch else in this void
continue false instanceof throw while
debugger finally new true with
default for null try
AVeja a diferença entre var e let no site MDN. Disponível em: https://mzl.
la/3iVoi0Q.Acesso 24 jan 2023
BUSQUE POR MAIS
14
 ● Evite o uso do caractere underline no início dos nomes de variáveis. JavaScript 
utiliza esse caractere nos nomes de alguns construtores da linguagem. 
Falaremos de construtores na seção relativa à orientação a objetos;
 ● Não utilize números no início dos nomes de variáveis. Isso gerará erros 
quando o interpretador JavaScript tentar executar seu código;
 ● Utilize nomes intuitivos para suas variáveis, de modo a descrever bem qual o 
objetivo delas. Isso ajuda muito quem for estudar seu código;
 ● Como dito, anteriormente, JavaScript é case sensitive. Assim, cuidado ao criar 
nomes de variáveis utilizando caracteres maiúsculos e minúsculos;
 ● Não utilize palavras reservadas da linguagem como nomes de variáveis. Isso 
também gerará erros na execução dos seus scripts.
 Por fim, antes de vermos exemplos práticos utilizando os conceitos vistos até aqui, é 
importante falar sobre os operadores matemáticos definidos pela linguagem JavaScript. 
Tais operadores são muito semelhantes aos das principais linguagens modernas mais 
utilizadas atualmente, como Java, PHP, C++ e outras.
 JavaScript define operadores de atribuição, aritméticos, relacionais e lógicos. O 
Quadro 3 apresenta os mais utilizados:
Grupo Operador Descrição
Atribuição = Atribuição simples.
+= Atribuição de adição
-= Atribuição de subtração
*= Atribuição de multiplicação
/= Atribuição de divisão
%= Atribuição de resto
**= Atribuição de exponenciação
Relacional == Igual
=== Exatamente igual (conteúdo e tipo de dado)
!= Diferente
!== Exatamente diferente (conteúdo e tipo de dado)
< Menor
<= Menor ou igual
> Maior
>= Maior ou igual
Aritméticos + Adição
- Subtração
* Multiplicação
/ Divisão
% Resto da divisão
** Exponenciação
++ Incremento
-- Decremento
15
1.4 CRIANDO O PRIMEIRO SCRIPT1.4 CRIANDO O PRIMEIRO SCRIPT
 Para implementar código em JavaScript, basta a utilização de um editor de 
textos simples como, por exemplo, o Notepad do sistema operacional Windows. No 
entanto, é fortemente recomendada a utilização de uma IDE (Integrated Development 
Environment), ou seja, um ambiente de desenvolvimento integrado. Tais ambientes 
disponibilizam conjuntos de ferramentas muito úteis para a criação, edição e testes de 
códigos em diversas linguagens. Essas ferramentas proporcionam maior agilidade para os 
desenvolvedores, evitando retrabalho e a repetição exaustiva de rotinas e procedimentos 
comuns na implementação da linguagem escolhida. Ademais, essas IDEs contam com 
modelos e templates prontos para a rápida utilização do programador, poupando 
bastante tempo na codificação do projeto em questão. Além disso, esses ambientes 
são altamente customizáveis, ou seja, podem ser organizados particularmente pelo 
desenvolvedor com as principais ferramentas que ele utiliza no seu cotidiano.
 Há várias IDEs robustas e completas disponíveis atualmente. Dentre as mais 
utilizadas, podemos citar o Visual Studio Code (VSCode), Atom, Sublime e Brackets. Todas 
são eficientes e proporcionam benefícios perceptíveis na implementação de códigos 
em diversas linguagens de programação. Nos programas criados neste livro foi utilizado 
o VSCode sob o sistema operacional Windows.
 Agora, veja abaixo exemplos de utilização de alguns dos operadores elencados no 
Quadro 3. No momento apropriado iremos criar scripts contendo diversos deles:
var x = 10; // variável x foi criada e recebeu o valor inteiro 10.
x += 5; // equivalente a x = x + 5. Assim, x armazena agora 15.
var y = x ** 3; // variável y é criada e recebe 15 elevado a 3. Assim, y = 3375.
X++; // equivalente a x = x + 1. Assim, x agora é igual a 16.
 Observe agora exemplos de uso de operadores relacionais, cujos resultados são 
sempre true (verdadeiro) ou false (falso):
var x = 5; // variável x foi criada e recebeu o valor inteiro 5.
 var y = 10; // variável y foi criada e recebeu o valor inteiro 10.
 var z = x == y; // z recebe false, pois x não é igual a y.
 var w = x != y; // w recebe true, pois x é diferente de y.
 Os operadores lógicos são muito utilizados em blocos de estruturas de controle, 
principalmente, para testarem condições. Mais adiante iremos ver exemplos na 
implementação de scripts reais.
Lógicos && E (AND)
OU (OR)
Quadro 3: Principais operadores de JavaScript
Fonte: Zanetti (2020, p. 51).
A linguagem JavaScript não diferencia valores inteiros de valores decimais. Assim, todos os 
números são representados na forma de ponto flutuante (decimal) de 64 bits. Dessa forma, 
mesmo que o programador atribua um valor inteiro a uma variável, internamente ela é 
armazenada na representação decimal.
FIQUE ATENTO
16
 Assim, abra o seu editor ou IDE de preferência e digite o código mostrado na Figura 
1:
 Ao finalizar, salve o arquivo num local de sua preferência com a extensão .html. A 
escolha do nome do arquivo é livre. Porém, escolha um nome que ajude na identificação 
dele como, por exemplo, teste1.html. Antes de executar o script criado, analisemos o 
código brevemente.
 Primeiro, observe como uma IDE beneficia a codificação para o desenvolvedor. A 
maioria delas, senão todas, mostram os números das linhas, para que o programador 
localize facilmente uma instrução, principalmente em casos de mensagens de erros. Note 
também a indentação automática gerada ao se inserir o código. Indentação se refere 
à técnica de utilização de tabulações para ajudar visualmente a definir a estrutura do 
código. Visualmente isso é muito útil para se localizar comandos e blocos de instruções. 
Outro ponto interessante é a coloração das tags HTML e de instruções da linguagem 
JavaScript. Como citado, anteriormente, essas opções são altamente configuráveis nas 
IDEs disponíveis hoje.
 Em relação ao código fonte mostrado na Figura 1, se atente ao seguinte:
 ● O código JavaScript é inserido diretamente na página HTML através da tag 
<script>. Tudo que estiver dentro dela será interpretado pelo motor JavaScript 
como código da linguagem até o fechamento com </script>;
 ● Os comentários ajudam muito no entendimento do que o programa realiza 
de fato. No exemplo foram utilizados apenas comentários de uma única linha;
 ● Alguns operadores foram utilizados. Na linha 13 usamos o operador atribuição 
de soma (+=) e na linha 14 o operador aritmético resto da divisão (%), também 
conhecido como módulo;
 ● As instruções das linhas 16 a 19 utilizam o método write do objeto document 
para enviar conteúdo para o navegador. Não se preocupe ainda em saber o 
Figura 1: Primeiro programa em JavaScript
Fonte: Elaborado pelo autor. (2022)
17
Figura 2: Primeiro programa em JavaScript
Fonte: Elaborado pelo autor. (2022)
que é um método e um objeto. Esse assunto será abordado na Unidade 5;
 ● Por fim, observe que o conteúdo é enviado para o navegador como string, 
ou seja, cadeias de caracteres entre aspas duplas. Aspas simples também 
podem ser utilizadas na criação e manipulação de strings. Note a utilização 
do operador + com strings. Seu objetivo é realizar a concatenação (junção) 
de conteúdo do tipo string.
 À medida que você for praticando os programas exemplos deste livro, sua 
familiaridade com JavaScript melhorará muito. Conforme mencionado, anteriormente, 
a prática é essencial no aprendizado deuma nova linguagem de programação.
 Para ver o resultado do script criado no navegador, localize-o e dê dois cliques 
para que seja aberto por um navegador instalado em seu computador. Os navegadores 
mais atuais não terão problemas ao abrir o arquivo criado e executar o código JavaScript 
inserido nele. Por isso, sempre utilize a versão mais atualizada do seu navegador de 
internet.
 Ao executar o arquivo, o resultado exibido no navegador será semelhante ao 
mostrado na Figura 2:
 O navegador renderiza o código JavaScript e apresenta o conteúdo. Note que as 
variáveis x e y exibem seus conteúdos armazenados após os cálculos realizados pelo 
interpretador. As tags HTML de cabeçalhos h1 e h2 presentes nas linhas 16 e 19 são 
corretamente estilizadas no documento exibido.
 O primeiro script é o pontapé inicial no seu desenvolvimento como programador 
com JavaScript. Nas unidades seguintes avançaremos no aprendizado da linguagem 
através de exemplos que inserem muito mais interatividade e conteúdo dinâmico.
VAMOS PENSAR?
A utilização de IDEs no desenvolvimento de software otimiza o tempo de trabalho do 
programador e do time de programação. Por que? Isso é vantajoso?
18
1. JavaScript é considerada uma linguagem de programação não tipada ou fracamente 
tipada porque:
a) Não possui tipos de dados definidos.
b) Define apenas tipos de dados primitivos.
c) Não necessita que o tipo de dado de uma variável seja previamente definido.
d) Define apenas tipos de dados que operam sobre objetos.
e) Exige que o programador declare explicitamente o tipo de dado no momento da 
criação da variável.
2. O nome oficial registrado da linguagem JavaScript é:
a) JScript
b) Fortran
c) EnvScript
d) ECMAScript
e) Java
3. Os valores true e false em JavaScript pertencem ao tipo de dados:
a) String
b) Booleano
c) Inteiro
d) Symbol
e) BigInt
4. (TRE/SE - adaptada) Em JavaScript, o operador representado por três sinais (===) de 
igual consecutivos retorna true se os operandos envolvidos forem:
a) Iguais e do mesmo tipo.
b) Iguais e do tipo numérico, apenas.
c) Iguais, mas não do mesmo tipo.
d) Diferentes e de tipos diferentes.
e) Diferentes, mas do mesmo tipo.
5. A linguagem JavaScript é case sensitive. Isso significa que:
a) Não diferencia letras minúsculas e maiúsculas.
b) Diferencia letras minúsculas e maiúsculas.
c) Não permite que nomes de variáveis comecem com letras maiúsculas.
d) Permite que nomes de variáveis comecem somente com letras minúsculas.
e) Nomes de variáveis devem sempre começar com números.
FIXANDO O CONTEÚDO
19
6. Em JavaScript, considere o operador aritmético %. A instrução x % y devolve:
a) A divisão percentual de x por y.
b) A exponenciação de x por y.
c) O teste de igualdade entre x e y.
d) A divisão simples de x por y.
e) O resto da divisão de x por y.
7. Das opções abaixo, marque a que contém uma palavra reservada em JavaScript:
a) DevOps
b) Continuous
c) React
d) Framework
e) Break
8. Em JavaScript, a instrução document.write(“texto”) resulta na:
a) Finalização do programa pelo interpretador JavaScript.
b) Escrita de uma mensagem de erro pelo interpretador JavaScript.
c) Escrita da string “texto” (sem aspas) na área de trabalho do navegador de internet.
d) Escrita de uma linha em branco na área de trabalho do navegador de internet.
e) Solicitação de entrada de texto via teclado pelo usuário do navegador de internet.
20
EXPRESSÕES E 
COMANDOS
21
Uma função, também chamada subrotina ou procedimento, “é um bloco de código 
definido uma vez, mas que pode ser executado (ou chamado) qualquer número de 
vezes” (FLANAGAN, 2013, p. 158). Uma função pode ser parametrizada ou não. No primeiro 
caso, significa que a função foi definida com uma lista de argumentos ou parâmetros, 
de modo que eles são necessários para o seu funcionamento. No segundo caso, a função 
dispensa parâmetros e, na sua definição, a lista de argumentos é vazia.
 Funções são extremamente úteis em JavaScript e em qualquer linguagem 
de programação. São necessárias quando o programador identifica uma tarefa que, 
geralmente, precisa ser realizada sistematicamente, várias vezes. Nesse sentido, uma 
função bem projetada deve realizar uma tarefa única e retornar um valor de retorno ou 
não.
2.1 AS CONCEPÇÕES DE LINGUAGEM2.1 AS CONCEPÇÕES DE LINGUAGEM
Uma função que realiza várias tarefas não é uma função bem projetada. Nesse caso, 
considere “quebrá-la” e criar uma nova função para cada tarefa que ela realiza. Em 
programação, esse conceito é conhecido como “dividir para conquistar”.
FIQUE ATENTO
 Como exemplo, suponha que no seu projeto de desenvolvimento seja necessário 
sempre calcular o índice de massa corporal (IMC) de uma pessoa, dados os parâmetros 
obrigatórios de peso e altura. Ao invés de você sempre calcular esse valor cada vez que ele 
for necessário, a solução mais elegante e inteligente é automatizar esse procedimento 
com a criação de uma função. Assim, basta chamar a função passando os argumentos 
peso e altura da pessoa, cujo IMC precisa ser calculado e retornado naquele instante. 
Dessa forma, em JavaScript a assinatura da função ficaria assim:
function calculaIMC (kilos, altura) {
altura = altura/100;
return (kilos / (altura * altura));
}
 Note que JavaScript reserva a palavra-chave function para a definição de funções. 
Utilizando nossa função calculaIMC como exemplo, considere o seguinte:
 ● A função possui um nome identificador único. Através desse nome, a função 
pode ser chamada em qualquer parte do código. As regras para escolha dos 
nomes de funções em JavaScript seguem as mesmas regras para nomes 
de variáveis. Nesse sentido, observe bem o nome da nossa função. Ele é 
intuitivo e descreve bem a tarefa realizada por ela. É uma execelente prática 
de programação escolher bons identificadores para suas funções, pois isso, 
facilita muito a leitura do código e a manutenibilidade dele;
 ● A função calculaIMC necessita apenas de dois argumentos ou parâmetros: 
kilos e altura. Eles aparecem entre parenteses e separados por vírgula. Se 
não fosse necessário nenhum parâmetro, a lista deveria ser vazia, contendo 
apenas abre e fecha parênteses. Tais identificadores são variáveis locais da 
própria função;
 ● Toda função possui um par de chaves: uma para abrir a função e outra para 
fechá-la. Isso define muito bem o bloco da função, de modo a delimitar seu 
código estruturalmente e visualmente.
22
 Isto posto, é importante agora abordar um ponto muito importante: escopo de 
variáveis. Escopo define uma região de influência da variável num determinado código 
fonte a que pertence. Em JavaScript e na maioria das linguagens de programação, 
variáveis podem possuir escopo global ou local. No caso da função calculaIMC, as 
duas variáveis passadas como parâmetros são de escopo local. Isso significa que elas 
são visíveis apenas dentro da função, não podendo ser invocadas em outra parte do 
código. No entanto, se tivessem sido declaradas fora do corpo da função, seu escopo 
seria global, de modo que seriam visíveis e utilizáveis em qualquer parte do programa. 
É fundamental que o programador se atente a essa particularidade a fim de evitar erros 
devido ao comportamento indesejado de variáveis no seu código.
 JavaScript possui uma extensa lista de funções nativas disponíveis para uso 
imediato. Tais funções são muito úteis e possibilitam o reuso de código, facilitando 
o trabalho do desenvolvedor, que não precisa “recriar a roda”. Assim, basta chamar a 
função desejada passando seus argumentos necessários. O Quadro 4 apresenta uma 
lista com alguns exemplos de funções nativas do JavaScript muito úteis e utilizadas:
Função Descrição
parseFloat() Analisa o argumento e retorna um número de ponto flutuante.
parseInt() Analisa o argumento e retorna um número inteiro.
toString() Retorna a representação em string do valor passado.
concat() Faz a junção das strings passadas como argumentos.
length() Retorna o tamanho do array.
toUpperCase() Converte a string em letras maiúsculas.
toLowerCase()Converte a string em letras minúsculas.
reverse() Inverte a ordem de um array.
sort() Ordena os elementos de um array.
sqrt() Retorna a raiz quadrada de um número.
min() Retorna o menor número de uma lista numérica.
max() Retorna o maior número de uma lista numérica.
Quadro 4: Algumas funções nativas de JavaScript
Fonte: Elaborado pelo autor (2022).
 As funções mostradas no Quadro 4 são apenas uma fração da enorme quantidade 
disponibilizada por JavaScript. Não se preocupe ainda com as indicações de funções 
que trabalham com arrays (vetores) ou objetos. Esses assuntos serão abordados mais 
adiante.
Veja a lista completa de funções do JavaScript na documentação da linguagem. 
As funções são elencadas para cada tipo de dados. Disponível em: https://mzl.
la/3Haak3f. Acesso em 25 jan 2023
BUSQUE POR MAIS
23
Figura 3: Representação gráfica de um vetor com 12 elementos
Fonte: Deitel (2008).
 Vetores ou arrays (arranjos) são estruturas de dados simples muito úteis para a 
modelagem de vários problemas do cotidiano. Em JavaScript, o “objeto Array permite 
a definição de vetores cujos elementos podem ser acessados posteriormente por meio 
do respectivo índice” (ZANETTI, 2020, p. 64). Os elementos de um array podem ser de 
diversos tipos, inclusive objetos e outros arrays, permitindo “a criação de estruturas de 
dados complexas, como arrays de objetos e arrays de arrays” (FLANAGAN, 2013, 137). Os 
índices de um array são númericos e sempre começam em zero. Assim, o tamanho de 
um vetor sempre será n-1, onde n é o número de elementos nele contido.
 Em JavaScript os arrays são dinâmicos. Isso signfica que podem crescer ou diminuir 
conforme a necessidade. Dessa forma, não é preciso determinar um tamanho fixo aos se 
declarar uma variável do tipo array. Um ponto interessante é que uma string nada mais 
é que um array de caracteres, cujos elementos podem ser acessados e manipulados 
através de seus índices numéricos.
 A Figura 3 apresenta esquematicamente a estrutura de um vetor de números 
com n = 12 elementos. Observe que os índices vão de 0 a 11, ou seja, de n a n-1. O vetor 
foi declarado com o identificador c. A seta apontando para c[0] indica o ínicio do array. 
A seta apontando para c[4] exemplifica que o item 1543 está na posição 4 do array, de 
modo que c[4] = 1543.
2.2 VETORES (ARRAYS)2.2 VETORES (ARRAYS)
 Assim, veja um exemplo de trecho de código em JavaScript para a criação e 
manipulação do vetor mostrado na Figura 3:
 var frutas = [‘banana’, ‘abacaxi’, ‘melancia’, ‘uva’];
 var vetAleatorio = [‘agua’, 334, [1, 3, 5, 7]];
 frutas[2] = ‘melao’;
 documento.write(“<p>Item 1 do array frutas = ” + frutas[0] + “</p>”);
 documento.write(“<p>Item 2 do vetor vetAleatorio = ” + vetAleatorio[1] + 
“</p>”);
 Do trecho de código JavaScript acima é possível concluir o seguinte:
 ● O array frutas possui 4 elementos do tipo primitivo string. Perceba que 
criamos as strings com aspas simples ao invés de aspas duplas. Essa é outra 
24
opção para criação de strings;
 ● O array vetAleatorio armazena itens de vários tipos: o item 1 é uma string, 
o item 2 é um número inteiro e o item 3 é também um array. Isso mostra 
que o programador pode combinar tipos de dados diferentes num vetor, 
dependendo da necessidade do desenvolvedor;
 ● Por armazenar um item do tipo array na sua terceira posição, vetAleatorio é 
dito um array multidimensional. Já frutas é um array simples, unidimensional. 
Uma matriz, por exemplo, é um array multidimensional, onde cada linha 
armazena arrays;
 ● Para acessar qualquer item de um vetor basta acessar seu nome identificador 
seguido de abre e fecha parênteses com o índice numérico correspondente 
ao item desejado;
 ● Conforme mostrado na linha 3 do trecho de código, é possível modificar 
um item do vetor facilmente também através de seu identificador e índice 
númerico da posição desejada.
 Num momento oportuno, falaremos sobre como acessar e manipular arrays 
multidimensionais. Isso é necessário porque envolve percorrer a estrutura inteira 
utilizando laços de iteração. Ademais, na última seção desta unidade, exemplificaremos 
a utilização de funções muito úteis no trabalho com arrays como, por exemplo, a que 
calcula e retorna o tamanho de um vetor.
 Adicionalmente, é importante citar que JavaScript possui em sua implementação 
o objeto Array. Perceba que agora não estamos falando do tipo básico array, e sim de um 
objeto. Isso permite ao programador ter à sua disposição diversas funções já prontas que 
trabalham sobre o objeto e no paradigma orientado a objetos. Porém, esse assunto será 
abordado mais adiante num momento oportuno.
2.3 OBJETOS2.3 OBJETOS
 As linguagens de programação mais modernas trabalham com objetos, a fim de 
modelarem problemas o mais próximo possível da nossa realidade. Um objeto “é um valor 
composto [que] agrega diversos valores (valores primitivos ou outros objetos) e permite 
armazenar e recuperar esses valores pelo nome” (FLANAGAN, 2013, p. 112). Ademais, 
conforme citado em MDN (2022), “compreender a natureza da orientação a objetos do 
JavaScript é crucial para aprofundar os conhecimentos acerca da linguagem.”.
 Os seres humanos naturalmente percebem sua realidade em termos de objetos. 
Por esse motivo, o paradigma da orientação a objetos consegue eficientemente 
modelar a maioria dos problemas do nosso cotidiano. A Unidade 5 deste livro é dedicada 
exclusivamente a abordar JavaScript orientada a objetos.
 Os objetos me JavaScript também são dinâmicos. Eles podem ser criados, 
acessados, modificados e destruídos assim como os tipos primitivos de dados, porém, 
com algumas diferenças. Um valor em JavaScript que não é de um tipo primitivo de 
dados (string, número, booleano, undefined, null, symbol) é um objeto.
 Diferentemente dos tipos primitivos, objetos possuem duas características 
fundamentais: atributos e métodos. Como exemplo, pense num objeto carro:
 ● Os principais atributos são: marca, cor, tipo, potência do motor etc;
 ● Os principais métodos, que são funções definidas para o objeto, são: 
mudarCor, calcularConsumoCombustivel, mover etc.
 É possível observar que a definição de objetos é bem intuitiva. Um ponto importante 
é que, para manipular as propriedades dos objetos, comumente são criados métodos 
padrões chamados tradicionalmente de getters e setters. Tais métodos serão abordados 
25
e detalhados na Unidade 5.
 Agora, veja um exemplo de trecho de código que cria, acessa e modifica as 
propriedades de um objeto em JavaScript utilizando alguns métodos simples:
var pessoa1 = {
 nome: “Maria”,
 idade: 35,
 sexo: ‘feminino’,
 nacionalidade: ‘brasileira’
};
pessoa1.idade = 40;
var n1 = new Array(10).fill(0, 0); 
n1[4] = 5;
document.write("<h3> Tamanho do Array = " + n1.length + "</h3>");
document.write("<h4> Item 1 do array n1 = " + n1[0] + "</h4>");
 Da análise do trecho de código em JavaScript acima, considere os seguintes 
pontos:
 ● Um objeto do tipo pessoa foi criado com os atributos nome, idade, sexo e 
nacionalidade. Na respectiva unidade que trata sobre orientação a objetos, 
veremos uma forma mais elegante de fazer isso;
 ● Na linha 7, o atributo idade do objeto pessoa1 foi modificado. Note o acesso ao 
atributo do objeto através do caractere ponto. Também veremos uma forma 
mais segura e elegante de acessar e modificar os atributos de um objeto na 
unidade sobre orientação a objetos;
 ● Na linha 8, um objeto do tipo Array com 10 elementos foi criado e preenchido 
com o comando new. Note que agora temos um objeto e não um tipo 
primitivo simples. O método fill() da especificação de JavaScript para objetos 
do Array foi usado para preencher o array n1 com zeros. Note que o método 
fill() espera 2 argumentos: o primeiro diz o índice onde o array deve começar 
a ser preenchido e o segundo diz qual o item deve ser inserido a partir do 
índice inicial indicado. Dessa forma, o array n1 passou a armazenar 10 itens 
com o valor numérico 0;
 ● Na linha 9, o item 4 do array n1 foi modificado de zero para5.
 ● As duas linhas finais imprimem na área de trabalho do navegador o tamanho 
do array n1 e o primeiro elemento dele.
 É muito importante e necessário que o desenvolvedor em JavaScript estude 
a documentação oficial da linguagem disponível em MDN (2022). Outras fontes 
ricas de informações e exemplos práticos estão disponíveis nos grupos mundiais de 
programadores JavaScript espalhados na internet.
2.4 EXEMPLOS2.4 EXEMPLOS
 Agora, é interessante e útil solidificar os conceitos vistos nesta unidade através 
de exemplos práticos de codificação. Como citado, anteriormente, os programas 
apresentados no livro foram criados utilizando o VSCode sob o sistema operacional 
Windows.
 Na Figura 4 é mostrada uma implementação da funçao calculaIMC apresentada 
na seção referente a funções. O código possui comentários de linha única a fim de 
facilitar o entendimento das instruções:
26
Figura 4: Uma implementação da função calculaIMC em JavaScript
Fonte: Próprio autor (2022).
 Digite o código apresentado na Figura 4 num editor ou IDE de sua escolha. Ao 
finalizar, salve o arquivo num local de sua preferência com a extensão .html. A escolha 
do nome do arquivo é livre. Porém, escolha um nome que ajude na identificação dele 
como, por exemplo, funcao.html. Os pontos a serem destacados no programa são os 
seguintes:
 ● A função criada realiza apenas uma tarefa bem especificada. Seu corpo é 
delimitado com abre e fecha chaves, contendo suas variáveis locais e cálculos 
necessários para a realização da tarefa proposta;
 ● A função criada fica disponível para ser chamada em qualquer parte do 
arquivo. É possível criar funções em arquivos separados, cuja extensão é .js. 
A grande vantagem disso é que o código fica mais limpo e as funções ficam 
disponíveis para todo o projeto, não somente no arquivo em que foi criada e 
implementada. Veremos esse artifício mais adiante;
 ● As linhas 17 e 18 utilizaram o método prompt nativo de JavaScript para solicitar 
as informações necessárias ao usuário do navegador de internet;
 ● A linha 21 apresenta o resultado computado na área do navegador de internet. 
Perceba que foi utilizada a função toFixed(2) para limitar o resultado em duas 
casas decimais.
 É importante ressaltar que o programa da Figura 4 espera que o usuário digite os 
valores corretamente, sem erros. Caso contrário, mensagens de erros serão apresentadas 
na tela do navegador. No momento oportuno faremos o tratamento de possíveis erros 
através de expressões condicionais do JavaScript.
 A Figura 5 apresenta um programa que cria e manipula arrays simples. Dê atenção 
aos comentários a fim de facilitar o entendimento das instruções:
27
Figura 5: Exemplo de programa com arrays em JavaScript
Fonte: Próprio autor (2022).
 Digite o código apresentado na Figura 5 num editor ou IDE de sua escolha. Ao 
finalizar, salve o arquivo num local de sua preferência com a extensão .html. Escolha 
um nome que ajude na identificação dele como, por exemplo, arrays.html. Os pontos a 
serem destacados no programa são os seguintes:
 ● Na linha 9, um array homogêneo contendo itens apenas do tipo string foi 
declarado e inicializado. Note que podemos criar rótulos strings utilizando 
também aspas simples. Como visto, anteriormente, JavaScript permite que 
o programador escolha se vai utilizar aspas duplas ou simples;
 ● Na linha 10, um array heterogêneo foi declarado e também inicializado. Ele 
é heterogêneo porque armazena itens de diversos tipos: string, numérico e 
array;
 ● A linha 12 muda o 3º item do vetor frutas. Lembre-se que o 3º item desse 
vetor é frutas[2];
 ● A linha 14 imprime o 1º item do array frutas na área de trabalho do navegador, 
sendo que a linha 15 faz o mesmo com o 2º item do array vetAleatorio;
 ● A linha 16 checa o tipo de dados do 3º item do array vetAleatorio com o 
operador typeof de JavaScript. A saída será object, pois o referido item é 
também um array.
 ● Por fim, a linha 17 imprime todo o conteúdo do array frutas na área de 
trabalho do navegador.
 Mais adiante conheceremos e utilizaremos expressões de controle de fluxos de 
JavaScript para percorrer cada item dos arrays, sem a necessidade de acessar cada 
elemento individualmente com várias linhas de código. Tais expressões economizam 
muitas linhas de programação e tornam o programa muito mais enxuto, elegante e 
legível principalmente para quem vai estudar a sua implementação posteriormente.
 Ademais, a Figura 6 apresenta um programa que cria e manipula alguns objetos 
em JavaScript. Um trecho dele foi mostrado e explicado na seção 2.3 desta unidade. Mais 
uma vez, dê atenção aos comentários a fim de facilitar o entendimento das instruções. 
Tenha atenção especial nos objetos, atributos e métodos que são utilizados no código:
28
 Digite o código apresentado na Figura 6 num editor de textos simples ou IDE de 
sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão 
.html. Escolha um nome que ajude na identificação dele como, por exemplo, objetos.
html. Os pontos a serem destacados no programa são os seguintes:
 ● Nas linhas 10 a 15, um objeto foi criado e seus atributos foram inicializados. 
Note que os atributos podem ser de tipos de dados diferentes;
 ● Na linha 17, o atributo idade do objeto foi alterado explicitamente. Note a 
utilização do operador ponto para acessar o atributo. Esssa não é a maneira 
mais segura e elegante de acessar e alterar o atributo de um objeto. Mais 
adiante, na unidade que aborda JavaScript orientada a objetos, definiremos 
métodos getters e setters para essa finalidade;
 ● Na linha 19, um objeto Array é criado e preenchido com zeros. Por ser um 
objeto, n1 possui nativamente o método fill() definido. Esse método espera 
dois argumentos: o índice inicial para começar a inserção dos itens e o item 
a inserir em cada posição do array;
 ● Na linha 20, o quinto elemento do array n1 foi explicitamente alterado. 
Assim como arrays simples, o objeto Array permite a manipulação de seus 
elementos através de índices de posição;
 ● Das linhas 22 a 26, imprimimos alguns atributos dos objetos pessoa1 e n1 na 
área de trabalho do navegador de internet.
 O desenvolvedor front-end com JavaScript deve entender e dominar as estruturas 
de dados elencadas nessa unidade. Dominar tais assuntos permite a criação de programas 
mais funcionais, elegantes e de fácil reuso e manutenibilidade.
Figura 6: Exemplo de programa com objetos em JavaScript
Fonte: Próprio autor (2022).
29
VAMOS PENSAR?
Na Figura 3 um array de nome c foi criado e preenchido com 12 elementos. Sabemos que 
os índices de posições de qualquer array em JavaScript começa com zero e vai de n a n-1, 
sendo n o número de elementos do array. Assim sendo, o que acontece se realizarmos a 
instrução c[12] para tentar acessar o último item de c? Implemente esse teste e veja o que o 
interpretador de JavaScript apresenta como resultado.
30
FIXANDO O CONTEÚDO
1. Considere a assinatura da seguinte função: calculaIMC (peso, altura). Nesse caso, é 
possível afirmar que:
a) É obrigatório informar os tipos de dados dos parâmetros peso e altura.
b) Já é possível concluir que a função retorna uma string como resultado.
c) A função necessita de pelo menos dois parâmetros para seu funcionamento.
d) O nome da função está errado porque não respeita as regras de nomenclatura de 
JavaScript.
e) A função obrigatoriamente deve devolver um valor como resultado.
2. Considere o seguinte array criado em JavaScript: vet = [1, 3, 5, 7, 9]. Nesse caso, é possível 
afirmar que:
a) O tamanho do vetor é n = 4 (4 elementos).
b) Para acessar o 3º elemento do vetor, basta acessar vet[2].
c) Todo array em JavaScript deve ser inicializado na sua criação.
d) A instrução vet.size() em JavaScript retorna o tamanho de vet.
e) Como observado em vet, arrays em JavaScript podem armazenar somente tipos iguais.
3. Considere a instrução a = new Array(5) em JavaScript. Nesse caso, é correto afirmar 
que:
a) O array a foi inicializado incorretamente.b) O array é um objeto do tipo Array, foi inicializado com 5 elementos e preenchido com 
zeros.
c) A instrução documento.write(typeof a) retornará object na área de trabalho do browser 
(navegador).
d) A declaração do array a está incorreta porque JavaScript não possui um tipo de dado 
Array.
e) A instrução a[0] = 25 acarretará um erro disparado pelo interpretador JavaScript.
4. Considere o trecho de código em JavaScript abaixo. Em seguida, escolha a opção 
correta:
a) Não existe a função alert disponível em JavaScript.
b) A execução do trecho de código mostrado acarretará um erro pelo interpretador 
JavaScript.
c) A definição da função tarefa está incorreta porque a mesma não possui nenhuma 
variável declarada e usada.
31
d) A assinatura da função tarefa está errada porque não informou os parâmetros 
necessários para seu funcionamento.
e) A execução da linha 5 mostrará uma caixa popup com o texto Mensagem!
5. A biblioteca Math em JavaScript disponibiliza várias funções muito úteis para 
manipulação de números. Nesse sentido, considere o trecho de código em JavaScript 
abaixo. Em seguida, dentre as assertivas, escolha a opção correta:
var numero = Math.random();
document.write(“<h3>O número é igual a” + numero + “</h3>”);
a) A segunda instrução mostrará um número negativo na área de trabalho do navegador.
b) A chamada à função Math.random() está errada, pois por definição, necessita de pelo 
menos um argumento.
c) Após a primeira instrução, a variável numero será com certeza será zero.
d) A função Math.random() sempre retorna um número aleatório entre 0 e 1.
e) A execução da segunda instrução com certeza escreverá um número negativo na área 
de trabalho do navegador.
6. JavaScript implementa nativamente diversas funções muito úteis que trabalham com 
arrays. Uma delas é push, cujo objetivo é:
a) Inserir um elemento no final do array.
b) Remover um elemento do início do array.
c) Ordenar o conteúdo do array.
d) Remover um elemento do final do array.
e) Inserir um elemento no início do array.
7. Em JavaScript, um método muito útil no trabalho com strings é o trim(). Seu objetivo 
é:
a) Retirar todos os acentos, caso existam, dos caracteres da string.
b) Transformar os caracteres da string em maiúsculos.
c) Remover os espaços em branco de ambos os lados de uma string.
d) Retornar o tamanho da string.
e) Cortar a string considerando os espaços em branco como os pontos de corte.
8. Considere o trecho de código JavaScript abaixo. Em seguida, escolha a opção correta:
var frutas = [‘banana’, ‘morango’, ‘melancia’, ‘abacaxi’];
frutas.sort();
frutas.reverse();
a) A 2ª instrução ordena o vetor frutas e a 3ª realiza a inversão dos seus itens.
b) A 3ª instrução ordena o vetor frutas e a 2ª realiza a inversão dos seus itens.
c) O array frutas foi inicializado incorretamente, pois seus itens deveriam ter sido criados 
com aspas duplas.
d) É possível acessar o item abacaxi do vetor frutas através da instrução frutas[4].
e) O 1º elemento do array frutas por ser acessado através da instrução frutas[1].
32
ESTRUTURAS DE 
CONTROLE E DE FLUXO
33
 No desenvolvimento de soluções em linguagens de programação, inevitavelmente 
será necessário utilizar estruturas de controle e de fluxo. Tais estruturas gerenciam o 
fluxo do código considerando-se certas condições e casos, e também iteram (percorrem) 
sobre arrays e outros tipos de dados compostos.
 JavaScript “implementa as tradicionais estruturas para controle de fluxo do 
programa” (ZANETTI, 2020, p. 59). A primeira a ser considerada é a que gerencia condições, 
chamadas de estruturas condicionais. “As instruções condicionais executam ou pulam 
outras instruções, dependendo do valor de uma expressão especificada” (FLANAGAN, 
2013, p. 90). Em outras palavras, são instruções responsáveis pela tomada de decisões no 
código.
 JavaScript implementa três instruções principais para o controle condicional: if, else 
e switch. A instrução if (“se” em inglês) “permite definir a execução ou não de determinado 
bloco de código, de acordo com a condição especificada” (ZANETTI, 2020, p. 59). Quando 
o programa chega numa instrução if, a condição entre parênteses é testada em termos 
de true (verdadeiro) ou false (falsa). Se ela for true, o fluxo do programa adentra no bloco 
delimitado pelo if e realiza as instruções ali contidas. Caso contrário, o bloco inteiro do if 
é pulado e o programa segue seu fluxo na próxima instrução.
 Quando a instrução inicial do if é avaliada como falsa, muito comumente há uma 
instrução else em seguida. O comando else (“senão” em inglês) garante que, caso a 
instrução do if seja falsa, a instrução pertencente a si será sempre executada.
 Para exemplificar a utilização da estrutura if/else, considere o trecho abaixo:
function start () {
 var n = prompt(“Entre com um número inteiro positivo”);
 if (n < 0) {
 document.write(“<p>O valor digitado é menor que zero!</p>”);
 }
 else {
 document.write(“<p>O valor digitado é maior que zero!</p>”);
 }
}
 O trecho acima definiu e criou a função start, cuja tarefa se resume a testar se 
um número digitado pelo usuário é menor ou maior que zero. Os destaques são as 
instruções condicionais if/else. No if, a variável x passa por um teste condicional. Se o 
teste for verdadeiro, o fluxo do programa entra no bloco do if e resulta as instruções 
que estiverem nele. Uma observação importante é que, caso o bloco do if ou do else 
contenham apenas uma única instrução, as chaves podem ser omitidas sem problemas.
 Ademais, caso a condição presente no if seja falsa, o fluxo do programa pula seu 
bloco e segue a execução. No caso considerado, o interpretador JavaScript encontra uma 
instrução else. Veja que else não possui uma condição, sendo uma alternativa à negativa 
da condição do if. Assim, o programa adentra no bloco do else e executa a instrução ou 
instruções contidas ali.
 Em JavaScript, outra possibilidade é o aninhamento de instruções if/else. Veja o 
trecho de código a seguir:
if (n == 1)
 document.write(“<p>Número ímpar!</p>”)
else if (n == 2)
3.1 ESTRUTURAS DE CONDIÇÃO
34
 document.write(“<p>Número par!</p>”)
else if (n == 3)
 document.write(“<p>Número ímpar!</p>”)
else
 document.write(“<p>Fim do programa</p>”)
 Essa estratégia possibilita que vários testes sejam realizados em sequência. 
Caso todas falhem, o bloco do instrução else final obrigatoriamente será executado. 
Utilizar esse tipo de estrutura depende muito da natureza do problema que está sendo 
modelado.
 Uma alternativa para o aninhamento exaustivo de vários ifs e elses é o comando 
de controle condicional switch. Essa instrução torna o programa muito mais elegante 
e inteligível, pois possui a capacidade de rotular possíves casos verdadeiros na análise 
da condição testada. O switch avalia várias opções até encontrar a correspondência 
definida pelo programador. A melhor forma de entender o funcionamento do switch é 
analisando um exemplo prático. Veja o trecho de código JavaScript a seguir:
var cargo = prompt(“Digite o cargo do funcionário:”);
switch (cargo) {
 case ‘gerente’:
 document.write(“<p>Salário base é R$3000,00.</p>”);
 break;
 case ‘supervisor’:
 document.write(“<p>Salário base é R$2000,00.</p>”);
 break;
 case ‘atendente’:
 document.write(“<p>Salário base é R$1600,00.</p>”);
 break;
 default:
 document.write(“<p>Salário base é R$1300,00.</p>”);
}
 Observe que o comando switch considera diversos testes para uma determinada 
variável. Nesse sentido, o programador deve ter bem em mente quais os possíveis valores 
a variável em questão pode assumir ao longo da execução do programa. No caso do 
trecho acima, a variável testada é cargo. No exemplo, ela pode assumir somente três 
valores: supervisor, gerente ou atendente. Assim, o código realiza os testes necessários 
até encontrar a correspondência. Quando um dos testes resulta em verdadeiro, o 
programa não realiza mais testes, pois encontra a palavra break. Essa instrução garante 
que o programa não continuará realizando mais testes do que o necessário.E se todos 
os testes falharem? Daí entra em cena a instrução default. Ela é atingida e executada 
quando todas as condições rotuladas do switch falham. Note que a instrução default não 
necessita de um break, pois é garantido que será a última instrução do switch.
 Na seção de exemplos, realizaremos vários testes com if, else e switc. Definidas 
as instruções condicionais de JavaScript, é importante agora definir as estruturas de 
repetição implementadas na linguagem.
Na página 96 do livro Projeto de interface com o usuário você encontra um 
quadro esquemático resumindo as instruções de controle condicionais de 
JavaScript. Disponível em: https://bit.ly/3jjoTtd. Acesso em 25 jan 2023
BUSQUE POR MAIS
35
 As instruções de repetição, também chamadas instruções de laço ou loops, 
“são conhecidas por desviar o caminho para si mesmas a fim de repetir partes de seu 
código” (SEGURADO, 2016, p. 96). Um exemplo clássico de sua utilização é na iteração 
dos elementos de uma array. Imprimir 10 itens de um vetor com instruções simples já é 
exaustivo. Essa tarefa se torna impraticável, por exemplo, com um array de mil elementos. 
Assim, a utilização de instruções de repetição facilita muito o trabalho do desenvolvedor. 
As três principais instruções de laço em JavaScript são while, do/while e for.
 “A instrução while é o laço básico da linguagem” JavaScript (FLANAGAN, 2013, p. 
95). While também possui uma expressão de avaliação. Tal expressão também é avaliada 
em termos de true ou false. Caso a condição seja falsa, o programa pula o bloco do while 
e continua seu fluxo para a próxima instrução. Porém, se a condição for verdadeira, o 
interpretador volta para o while e avalia novamente sua condição. Essa repetição acontece 
enquanto (while em inglês) a expressão for verdadeira. Na primeira vez que a condição 
for avaliada como falso, as instruções do bloco while não são mais executadas e o fluxo 
do programa segue para a próxima instrução depois desse bloco. Para exemplificar, 
considere o trecho de código que imprime os números de 0 a 10:
var contador = 0;
while (contador <= 10) {
 document.write(“<p>contador: ” + contador + “</p><br>”);
 contador++;
}
 Analisemos brevemente as instruções anteriores:
 ● Uma variável chamada contador foi definida e inicializada como valor zero. 
Essa variável irá guardar o número de repetições que foram realizadas pelo 
while;
 ● O comando while possui uma expressão de condição que testa se a variável 
é menor ou igual a 10. Enquanto isso for verdade, a instrução presente no 
bloco do while será realizada;
 ● A variável contador é incrementada com o operador de incremento ++. Essa 
instrução é conhecida como controle do laço, pois é ela que atualiza a variável 
contador para o correto funcionamento do laço. Nesse caso, se a variável 
contador não fosse atualizada, o laço while jamais terminaria, pois ela seria 
sempre zero, fazendo o teste da condição do laço ser sempre verdadeiro.
 Note que é preciso ter bastante cuidado na definição de condições e incrementos 
ou decrementos para as variáveis de controle dos laços. Uma escolha errada ou calculada 
erroneamente pode causar efeitos colaterais indesejados e difíceis de encontrar no 
código do programa.
 Isto posto, consideremos agora a instrução de repetição do/while. Ela é muito 
semelhante ao while, exceto pelo fato de que “a expressão do laço é testada no final e 
não no início do laço”. Na prática, “o corpo do laço sempre é executado pelo menos uma 
vez” (FLANAGAN, 2013, 96). Veja um exemplo prático utilizando a estrutura de repetição 
do/while do JavaScript:
let vetor = [];
let i = 10;
do {
 vetor.push(i);
3.2 ESTRUTURAS DE REPETIÇÃO
36
 i++;
} while (i < 10);
document.write(“<p>Vetor = “ + vetor + “</p>”);
 Do trecho de código acima é possível concluir o seguinte:
 ● Um array nomeado como vetor foi declarado e inicializado como vazio;
 ● A variável local i foi criada e inicializada com o número inteiro 10;
 ● O laço do/while começa com a instrução do, sem parênteses e qualquer 
expressão de condição;
 ● O bloco do laço do/while possui duas instruções: a primeira insere o valor de 
i no array e a segunda incrementa i em uma unidade;
 ● A estrutura de repetição do/while termina com uma instrução while seguida 
de uma expressão de condição entre parênteses e ponto e vírgula para 
marcar o fim do bloco.
 O resultado desse trecho de código será Vetor = [10] na área de trabalho do 
navegador de internet. Como isso é possível se a condição do while falha já na primeira 
tentativa, pois i não é menor que 10? Essa é a diferença entre o laço do/while e while. 
É garantido que do/while executa pelo menos uma vez as instruções contidas em seu 
bloco.
 Por fim, consideremos a estrutura de repetição for, a mais utilizada pelos 
programadores. O laço for é mais compacto e enxuto que while e do/while. Enquanto 
while e do/while atualizam e incrementam suas variáveis de inicialização e controle dentro 
de seus respectivos blocos, o laço for realiza tais tarefas numa única linha, facilitando o 
entendimento do que está sendo feito.
 De maneira semelhante ao que é feito nas instruções while e do/while, a condição 
do for é avaliada como verdadeira ou falsa. Se for falsa, o bloco de instruções do for é 
pulado e o fluxo do programa continua para a próxima instrução. Caso a condição seja 
verdadeira, o programa adentra o bloco e executa as instruções ali contidas. Ao final da 
última instrução do bloco, o fluxo retorna para a primeira linha do for, manipula a variável 
de controle e avalia novamente a condição do laço. Esse processo repetitivo é realizado 
até que a condição seja avaliada como falsa pela primeira vez.
 De maneira geral, a estrutura do laço for em JavaScript e em muitas linguagens de 
programação é a seguinte:
for (inicialização; condição; incremento/decremento) {
 instrução;
}
 Se houver apenas uma instrução no bloco do laço for, o par de chaves pode ser 
omitido. Outro ponto importante é que as três expressões que dirigem o for devem ser 
separadas por ponto e vírgula.
A fim de exemplificar o uso da estrutura de controle de repetição for, observe o trecho 
de código JavaScript a seguir:
for (var i = 0; i <=10; i++) {
 document.write(“<p>O número agora é: ” + i + “</p><br>”);
}
 O resultado da execução do trecho de código será a impressão dos números 
inteiros de 0 a 10 na área de trabalho do navegador de internet. Note que as instruções 
acima realizam a mesma tarefa feita pelo código exemplo com o laço while mostrado 
anteriormente, porém, com duas vezes menos linhas de código.
37
 Novamente, é interessante e útil solidificar os conceitos vistos nesta unidade 
através de exemplos práticos de codificação em JavaScript. Como citado anteriormente, 
os programas apresentados no livro foram criados utilizando o VSCode sob o sistema 
operacional Windows.
 Na Figura 7 é mostrada uma implementação do primeiro exemplo apresentado 
na seção referente às estruturas de controle condicionais de JavaScript. O programa 
possui comentários de linha única ao longo do código a fim de facilitar o entendimento 
das instruções. Dê atenção às instruções if/else, as quais são responsáveis pelo controle 
do fluxo do código apresentado:
3.3 EXEMPLOS
Sempre é possível transformar um laço while num laço for. Para isso, basta adaptar a 
estrutura e forma das expressões de controle, inicialização e incremento/decremento.
FIQUE ATENTO
Figura 7: Exemplo de programa com estruturas de controle do tipo if/else em JavaScript
Fonte: Próprio autor (2022).
 Digite o código apresentado na Figura 7 num editor de textos simples ou IDE de sua 
escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão .html. 
Escolha um nome que ajude na identificação dele como, por exemplo, condicionais1.
html. Os pontos a serem destacados no programa são os seguintes:
 ● Na linha 10, há a definição e criação da função start, que não necessita de 
parâmetros e cuja tarefa é verificar se um número digitado pelo usuárioé 
maior ou menor que zero;
 ● Na linha 12 há a instrução que solicita que o usuário digite um número de sua 
38
Figura 8: Exemplo de programa com if/else aninhados em JavaScript
Fonte: Próprio autor (2022).
preferência. Esse número é armazenado na variável local n;
 ● A linha 14 realiza um teste com o conteúdo da variável n que armazena o 
número digitado pelo usuário. O if testa se o número é menor que zero. Se 
o teste for true (verdadeiro), a mensagem na linha 16 é mostrada na área de 
trabalho do navegador de internet;
 ● Se o teste da linha 14 falhar, ou seja, se for falso, automaticamente o bloco 
de instruções do if é saltado e JavaScript o bloco do else a partir da linha 19. 
Assim, a mensagem na linha 21 é mostrada na área de trabalho do navegador 
de internet;
 ● Na linha 25 há a chamada da função start;
 ● A linha 26 apenas sinaliza o fim da execução do script com um texto na área 
de trabalho do navegador de internet.
 Ademais, vejamos um exemplo de código em JavaScript que utiliza estruturas de 
controle condicionais do tipo if/else aninhados. Observe a Figura 8 e dê atenção aos 
comentários ao longo do código:
 Digite o código apresentado na Figura 8 num editor de textos simples ou 
IDE de sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a 
extensão .html. Escolha um nome que ajude na identificação dele como, por exemplo, 
condicionaisAninhados.html. Os pontos a serem destacados no programa são os 
seguintes:
 ● Na linha 10 há a definição e criação da função getNota. Sua tarefa é avaliar a 
nota digitada pelo usuário, imprimindo um resultado referente a essa nota;
39
Figura 9: Exemplo de programa com a estrutura de controle condicional switch em JavaScript
Fonte: Próprio autor (2022).
 ● Na linha 12 há a solicitação ao usuário para que digite uma nota. Esse dado será 
armazenado na variável local nota. Os testes serão realizados considerando 
o seu conteúdo;
 ● Nas linhas 14 a 32 temos os testes propriamente ditos. Note o aninhamento 
de ifs/elses. Se o teste num if falhar, o fluxo do programa realiza o teste dos 
próximos elses/ifs. Se todos os testes forem falsos, o bloco do else que inicia 
na linha 29 obrigatoriamente é executado pelo interpretador de JavaScript.
 ● Na linha 35 há a chamada efetiva da função getNota, que não necessita de 
parâmetros para sua chamada e execução;
 ● A linha 36 apenas sinaliza o fim da execução do script com um texto na área 
de trabalho do navegador de internet.
 Note que, dependendo da natureza do problema, o programador talvez tenha que 
digitar uma grande quantidade de testes com ifs/elses aninhados, tornando a codificação 
exaustiva e o código muito longo. Nesse sentido, para ajudar, vimos a instrução de 
controle condicional switch, cuja estrutura é muito mais elegante e enxuta.
 A Figura 9 a seguir apresenta um programa exemplo em JavaScript que utiliza 
uma estrutura de controle condicional do tipo switch. Note a utilização das instruções de 
rotulação com case e as paradas com break, que obrigam o programa a finalizar o bloco 
do switch quando encontra um bloco com teste verdadeiro e executa as instruções desse 
bloco. Note também a utilização da instrução default. Dê atenção aos comentários ao 
longo do programa:
40
 Digite o código apresentado na Figura 9 num editor de textos simples ou IDE de 
sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão 
.html. Escolha um nome que ajude na identificação dele como, por exemplo, switch.
html. Os pontos a serem destacados no programa são os seguintes:
 ● Na linha 11 a função verifica é definida e criada. Sua tarefa é verificar o nome 
do cargo digitado pelo usuário;
 ● A linha 13 cria a variável cargo para armazenar o texto digitado pelo usuário;
 ● As linhas 15 a 32 definem o bloco de intruções do switch. Na linha 15 a expressão 
de controle do switch é a variável local cargo. Seu conteúdo é testado por cada 
instrução case nas linhas 17, 21 e 25. Caso haja a correspondência do conteúdo 
da variável cargo com rótulo presente num case, o fluxo do programa adentra 
no bloco desse case e executa as instruções contidas nele;
 ● As instruções break presentes em cada bloco case interrompem o bloco 
switch quando uma correspondência é testada como verdadeira. A execução 
de uma instrução break faz o fluxo do programa sair do bloco switch e 
continuar sua execução para a próxima instrução;
 ● Se todos os testes falharem, obrigatoriamente o bloco default é executado.
 Agora, vejamos um programa que utiliza as estruturas de controle de repetição 
while e do/while. Dê atenção aos comentários no código fonte:
 Digite o código apresentado na Figura 10 num editor de textos simples ou 
IDE de sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a 
extensão .html. Escolha um nome que ajude na identificação dele como, por exemplo, 
whileDoWhile.html. Os pontos a serem destacados no programa são os seguintes:
Figura 10: Exemplo de programa com while e do/while em JavaScript
Fonte: Próprio autor (2022).
41
Figura 11: Exemplo de programa com while e do/while em JavaScript
Fonte: Próprio autor (2022).
 ● A linha 9 define uma variável local que será a controladora do laço while. Tal 
variável será sempre incrementada a fim de garantir o correto funcionamento 
nos testes da condição do laço;
 ● O bloco while é definido das linhas 11 a 15. Observe o teste realizado na linha 
11, onde a variável controladora sempre será testada. Enquanto esse teste 
for verdadeiro, as instruções contidas no bloco do while serão efetuadas. Na 
primeira vez em que a condição for falsa, o bloco é abandonado;
 ● A instrução presente na linha 14 é especial, pois é ela que atualiza a variável 
controladora do laço while;
 ● As linhas 17 e 18 definem duas variáveis locais: uma do tipo array e outra do 
tipo inteiro;
 ● O bloco do/while é definido das linhas 20 a 25. Note que a expressão de 
teste do laço do/while aparece somente no fim do bloco, na linha 25. Essa 
é a diferença principal entre os laços while e do/while. Visto que o teste 
é realizado somente no final do laço do/while, há a garantia de que suas 
instruções serão realizadas pelo menos uma vez;
 ● Note que o teste do laço do/while presente na linha 25 já falha na primeira 
vez, pois i não é menor que 10. Porém, como trata-se do laço do/while, as 
instruções do bloco foram realizadas ao menos uma vez;
 ● Perceba que o array, com certeza, receberá o elemento presente inicialmente 
na variável i, pois o laço do/while executará pelo menos uma única vez, 
atribuindo tal valor ao vetor com a instrução presente na linha 22.
 Finalmente, consideremos um exemplo de programa JavaScript contendo a 
estrutura de controle de repetição for. Dê bastante atenção aos comentários no código 
fonte:
42
VAMOS PENSAR?
A partir dos seus conhecimentos sobre estratégias de leitura e sobre o papel da escola como 
espaço de ensino de leitura, pense em um gênero discursivo e proponha uma sequência 
didática que vise à formação de sujeitos leitores críticos e protagonistas. 
 Digite o código apresentado na Figura 11 num editor de textos simples ou IDE de 
sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão 
.html. Escolha um nome que ajude na identificação dele como, por exemplo, laco_for.
html. Em seguida, abra o arquivo efetuando clique duplo a fim de visualizar o resultado 
na tela do seu navegador de internet.
43
FIXANDO O CONTEÚDO
1. As estruturas de controle condicionais presentes na linguagem JavaScript são:
a) else e case
b) switch e default
c) default e break
d) if/else e switch
e) continue e break
2. As estruturas de controle de repetição presentes na linguagem JavaScript são:
a) for, else e switch
b) if, case e for
c) while, do/while e for
d) while, else e for
e) do/while, for e continue
3. A instrução break presente na estrutura condicional switch do JavaScript tem o 
objetivo de:
a) Garantir a continuação da execução dasinstruções do bloco switch.
b) Retornar ao início do bloco switch para que a expressão de controle seja novamente 
testada.
c) Garantir a interrupção das instruções do bloco switch, pois o teste de controle encontrou 
uma correspondência verdadeira.
d) Causar a interrupção total do programa.
e) Pausar a execução do programa até que o usuário entre com uma ação solicitada.
4. A instrução default presente na estrutura condicional switch do JavaScript tem o 
objetivo de:
a) Finalizar as instruções contidas no bloco switch.
b) Executar a instrução presente no seu bloco caso todos os testes com as instruções 
case tenha falhado.
c) Causar a interrupção total do programa.
d) Imprimir uma mensagem final de execução do programa para o usuário.
e) Incrementar a expressão de controle do switch para que as instruções continuem seu 
fluxo normal.
5. Analise o trecho de código em JavaScript abaixo. Em seguida, escolha a opção correta 
dentre as assertivas a seguir:
44
for (i = 0; i <=10; i++) {
 if (i % 2 == 0) {
 document.write(“<p> Esse é! Número:” + i + “</p>”);
 else
 document.write(“<p> Esse não é! Número:” + i + “</p>”);
}
a) O laço imprime os números ímpares no intervalo de 0 a 10.
b) O laço não imprimirá nenhuma informação na área de trabalho do navegador de 
internet.
c) Apenas a instrução else será executada, uma única vez.
d) O operador % calcula a raiz quadrada de um número inteiro.
e) O laço imprime os números pares no intervalo de 0 a 10.
6. Analise o trecho de código em JavaScript abaixo. Em seguida, escolha a opção correta 
dentre as assertivas a seguir:
vetor cores = [‘vermelho’, ‘verde’, ‘azul’, ‘cinza’, ‘marron’];
let indice = 0;
while (indice < cores.length) {
 document.write(“<p>índice: ” + índice + “=> ” + cores[indice] + “</p>”);
 índice++;
}
a) O trecho de código itera sobre o array e imprime cada índice do vetor cores seguido 
do item correspondente a ele.
b) O trecho de código é responsável pela ordenação dos itens do array cores.
c) A execução dum programa que contenha o trecho de código considerado apresentará 
um erro devido ao acesso de um índice inválido do array cores.
d) O laço while irá iterar sobre o vetor cores somente duas vezes.
e) A expressão que controla o laço while foi declarada incorretamente.
7. Analise o trecho de código em JavaScript abaixo. Em seguida, escolha a opção correta 
dentre as assertivas a seguir:
for (var i = 1; i < 10; i += 2) {
 if (i == 7)
 break;
 document.write(“<h2>Número é = ” + i + “</h2>”);
}
a) O laço não executará porque possui uma instrução break em seu bloco.
b) O laço for irá mostrar na área de trabalho do navegador de internet apenas o número 
7.
c) O laço for irá mostrar na área de trabalho do navegador de internet apenas os números 
5 e 7.
d) O laço for irá mostrar na área de trabalho do navegador de internet apenas o número 
1.
e) O laço for irá mostrar na área de trabalho do navegador de internet os números 1, 3 e 5.
45
8. Em JavaScript, considera a instrução continue. Assim, escolha a opção correta dentre 
as assertivas a seguir:
a) Ao encontrar a instrução continue, o interpretador JavaScript encerra o programa.
b) A instrução continue é utilizada para incrementar os laços while, do/while e for.
c) A instrução continue finaliza o bloco de instruções no qual está contida.
d) A instrução continue foi descontinuada na versão mais atual de JavaScript.
e) A instrução continue termina a iteração atual do laço em que está contida e continua 
a execução deste laço para a próxima iteração.
46
DOCUMENT 
OBJECT MODEL (DOM)
47
4.1 INTRODUÇÃO AO DOM
 Uma página web apresentada no navegador de internet pode ser definida como 
um grande documento que contém várias outras partes: título, cabeçalho, parágrafos, 
tabelas, rodapé etc. Nesse cenário, Javascript define um objeto Document que é utilizado 
para representar o conteúdo da janela que é mostrada pelo navegador no momento 
em que o usuário está interagindo com ele. Este objeto é o principal de uma grande 
API (Application Programming Interface) denominada Document Object Model (DOM – 
Modelo de Objeto de Documento, em português), responsável por fornecer meios para 
a representação e manipulação de conteúdo de páginas web (FLANAGAN, 2013).
 A DOM é a “API fundamental para representar e manipular o conteúdo de 
documentos HTML e XML”. Assim, o desenvolvedor web front-end precisa entender 
seus “vários detalhes de arquitetura” a fim de criar soluções profissionais e sérias para a 
internet (FLANAGAN, 2013, p. 351).
 DOM provê acesso a todos os componentes de uma página web, representando-
os através de uma hierarquia de objetos. Sendo assim, Javascript possibilita a criação, 
modificação e remoção dinâmica desses elementos (DEITEL, 2008).
 Inicialmente, entenda que “os elementos aninhados de um documento HTML ou 
XML são representados na DOM como uma árvore de objetos” (FLANAGAN, 2013, p. 352). 
Para entender como isso funciona, considere o código de uma página HTML simples 
mostrado na Figura 12 a seguir:
 Estruturalmente, a representação da árvore DOM do documento HTML mostrado 
na Figura 12 é destacada na Figura 13 a seguir:
Figura 12: Exemplo de documento HTML simples
Fonte: Flanagan (2013, p. 352).
Figura 13: Estrutura em árvore de um documento HTML simples
Fonte: Flanagan (2013, p. 352).
48
 Cada componente de uma árvore é denominado nó ou node. Note que a árvore 
possui níveis, como se fosse um organograma ou fluxograma clássicos. O nó acima de 
um outro nó é o pai dele e os nós cujo nível se encontram imediatamente abaixo de 
um outro nó são denominados filhos desse nó. Por exemplo, na árvore da Figura 13, os 
nós <head> e <body> são filhos do nó <html> e o nó abaixo de <h1> é seu filho único. 
Ademais, é importante perceber que a árvore é representada de forma invertida, com o 
nó raiz sendo sempre o primeiro a ser mostrado. Além disso, note que o nó raiz de uma 
árvore DOM sempre é Document, o qual representa o documento inteiro.
 Isto posto, agora é necessário saber como percorrer e manipular os componentes 
de uma árvore DOM. Javascript provê propriedades e métodos especiais que abstraem 
e facilitam muito essas tarefas. Nesse sentido, a linguagem implementa e disponibiliza 
para o desenvolvedor uma gama de procedimentos conhecidos como eventos. Nas 
seções seguintes, utilizaremos os eventos mais importantes e conhecidos para o 
desenvolvimento web front-end.
4.2 EVENTOS DOM
 Antes de abordarmos os eventos de Javascript mais importantes fornecidos pela 
DOM, é muito importante conhecer o método getElementById. “Qualquer elemento 
HTML pode ter um atributo id. O valor desse atributo deve ser único dentro do documento” 
(FLANAGAN, 2013, p. 354). Dessa maneira, o método getElementById do objeto Document 
possibilita a seleção de qualquer elemento baseado na sua identificação única, ou seja, 
seu id. Essa é a maneira clássica e mais utilizada em Javascript para selecionar elementos 
de documentos.
 Para entender o funcionamento de getElementById, considere os exemplos 
mostrados na Figura 14a e na Figura 14b. A primeira contém o código de uma página 
HTML simples e a segunda apresenta o código Javascript de uma função chamada pela 
página definida no código da Figura 14a. Dê atenção aos comentários ao longo dos 
programas:
Figura 14a: Um documento HTML simples
Fonte: Adaptado de MDN (2022).
 Digite o código apresentado na Figura 14a num editor de textos simples ou 
IDE de sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a 
extensão .html. Escolha um nome que ajude na identificação dele como, por exemplo, 
getElementSample.html. Os pontos a serem destacados no programa são os seguintes:
 ● Na linha 4 indicamos que a página HTML utilizará o script utils.js em algum 
momento. Para isso, utilizamos a tag <script> e seu atributo src, cuja função 
é informar o caminho onde o referido script se encontra. Caso o script não 
estivesse na mesma pasta que o arquivo HTML, seria necessário informar o 
caminho completo para sua corretalocalização;
49
 Novamente, digite o código apresentado na Figura 14b num editor de textos 
simples ou IDE de sua escolha. Ao finalizar, salve o arquivo num local de sua preferência 
com a extensão .js. Essa extensão indica que o arquivo contém código fonte escrito na 
linguagem Javascript. No exemplo, o nome escolhido foi utils.js. Os pontos a serem 
destacados no script são os seguintes:
 ● As linhas 3 a 6 definem e criam a função mudaCor, que recebe apenas um 
parâmetro. Num arquivo .js podem ser inseridas quantas funções forem 
necessárias, bastando o desenvolvedor importá-lo na página que o utilizará, 
assim como foi feito na linha 4 da Figura 14a;
 ● A linha 4 define uma constante chamada elem que recebe o elemento 
selecionado pelo método especial getElementById. Note que o método 
procurará no documento que a chamou apenas o elemento cujo id é igual a 
‘paragrafo’;
 ● A linha 5 utiliza um atributo já definido por Javascript para mudar a cor do 
elemento devolvido por getElementById.
 ● Ao perceber que o fim da função foi atingido, o interpretador Javascript 
devolve o controle para a página chamadora e continua o fluxo do programa. 
Visto que a página não possui mais conteúdo a ser renderizado, a mesma 
permanece inalterada.
Figura 14b: Arquivo Javascript contendo uma função definida
Fonte: Adaptado de MDN (2022).
 ● A linha 7 cria um parágrafo cujo id é ‘paragrafo’. Como dito, anteriormente, o 
id é único e exclusivo para um elemento do DOM;
 ● As linhas 8 e 9 contêm as chamadas para o envento onclick de Javascript. 
Esse evento dispara uma ação quando um botão é clicado pelo usuário. 
No caso considerado, ao clicar em qualquer dos dois botões que aparecem 
na página criada, a função mudaCor, que está definida no arquivo utils.js, 
será chamada. O clique no primeiro botão chama a função mudaCor com 
o parâmetro ‘blue’. Por sua vez, o clique no segundo botão chama a mesma 
função passando o parâmetro ‘red’.
 Agora, note o código Javascript apresentado na Figura 14b. Dê atenção aos 
comentários ao longo do programa:
A API DOM de Javascript é ríquissima em métodos para a manipulação de 
elementos de documentos. Veja uma lista bem detalhada na documentação 
da linguagem em: https://mzl.la/3je546y. Acesso em 25 jan 2023
BUSQUE POR MAIS
50
 A partir do exemplo apresentado nas figuras 14a e 14b, é possível entender como o 
tratamento de eventos acontece em Javascript. Nas linhas 8 e 9 da Figura 14a, o evento 
onclick foi utilizado. Tal evento ocorre quando o usuário efetua um clique com o ponteiro 
do mouse num determinado elemento do documento. Dessa forma, onclick não é 
exclusivo para elementos do tipo botão, mas é muito utilizado em associação com tais 
elementos.
 Como destaca Flanagan (2013, p. 433), “programas JavaScript do lado do cliente 
usam um modelo de programação dirigido por eventos assíncronos”. Dessa forma, “o 
navegador Web gera um evento onde acontece algo interessante no documento, no 
navegador ou em algum elemento ou objeto associado a ele”.
 No exemplo anterior, associamos uma função própria ao evento onclick. Esse 
estilo de programação é muito utilizado e bastante útil, uma vez que, o programador 
fica livre para determinar qual o efeito será gerado após a ocorrência de um determinado 
evento.
 Por definição, “eventos são simplesmente ocorrências a respeito das quais seu 
programa vai ser notificado pelo navegador Web” (FLANAGAN, 2013, p. 433). Se você 
criar código que capture e realize o tratamento deles, Javascript efetuará a associação 
necessária. Caso contrário, por exemplo, um clique de mouse num botão que não vincula 
o evento onclick a um determinado procedimento não realizará nada ao ser clicado pelo 
usuário. Assim, é muito comum e razoável a criação de funções tratadoras (ouvintes) dos 
eventos que podem ocorrer durante a interação do usuário com o navegador de internet 
(DEITEL, 2008).
 Isto posto, agora é interessante destacar os eventos mais comuns e importantes 
de Javascript utilizados no desenvolvimento web front-end. O Quadro 5 apresenta boa 
parte deles, não sendo, de maneira alguma, a listagem completa. O rol completo e 
detalhado pode ser encontrado na documentação da linguagem em MDN (2022). 
Evento Ocorrência
click Pressionamento e liberação do botão do mouse.
mousemove Movimentação do cursor do mouse sobre o elemento.
mouseout Movimentação do cursor do mouse para fora do elemento.
dblclick Realização de duplo clique com o mouse sobre o elemento.
load Carregamento total do documento no navegador de internet.
keydown Pressionamento de uma tecla do teclado.
keyup Liberação de uma tecla do teclado depois que foi pressionada.
scroll Rolagem num determinado elemento.
Quadro 5: Alguns dos eventos mais importantes de JavaScript
Fonte: Adaptado de MDN (2022).
 Devido à grande quantidade de eventos disponíveis na documentação de 
Javascript, é responsabilidade do desenvolvedor conhecer e se familiarizar, pelo menos, 
com os mais importantes e utilizados. Na próxima seção utilizaremos vários deles em 
exemplos práticos.
51
4.3 EXEMPLOS
 Novamente, é interessante e útil solidificar os conceitos vistos nesta unidade 
através de exemplos práticos de codificação em JavaScript. Como citado, anteriormente, 
os programas apresentados no livro foram criados utilizando o VSCode sob o sistema 
operacional Windows.
 As figuras 15a e 15b apresentam uma implementação utilizando o evento onload 
de JavaScript. O programa possui comentários de linha única ao longo do código a fim 
de facilitar o entendimento das instruções. Note também a utilização dum arquivo com 
a extensão .js específico para a criação das nossas funções. Essa é uma excelente prática 
para manutenção de código e para desacoplar as instruções de estruturas e estilização 
(HTML, CSS, etc) do código que utiliza comandos específicos como Javascript, por 
exemplo.
 Digite o código apresentado na Figura 15a num editor de textos simples ou IDE de 
sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão 
.html. Escolha um nome que ajude na identificação dele como, por exemplo, onload_
test.html. Os pontos a serem destacados no programa são os seguintes:
 ● Na linha 4 indicamos que a página HTML utilizará o script utils.js. Neste 
arquivo definimos e criamos nossas funções;
 ● A linha 6 faz a associação do event onload do documento à função 
verificaCookies, localizada no arquivo utils.js. Note que a função foi definida 
sem a necessidade de parâmetros;
 ● A linha 7 será renderizada no navegador de internet somente após a execução 
da instrução da linha 6, pois deve esperar o retorno da função.
 Agora, note o código Javascript apresentado na Figura 15b. Dê atenção aos 
comentários de linha ao longo do programa:
Figura 15a: Documento HTML para a utilização do evento onload de Javascript
Fonte: Próprio autor (2022).
Figura 15b: Exemplo de utilização do evento onload de Javascript
Fonte: Próprio autor (2022).
52
 Digite o código Javascript apresentado na Figura 15b. Ao finalizar, salve o arquivo 
num local de sua preferência com a extensão .js, por exemplo, utils.js. Os pontos a serem 
destacados no programa são os seguintes:
 ● A função verificaCookies está definida nas linhas 8 a 15;
 ● A linha 9 testa uma propriedade especial do navegador de internet chamada 
navigator.cookieEnabled, cuja função é verificar se o armazenamento de 
cookies está habilitado ou não. Javascript implementa e disponibiliza várias 
dessas propriedades nativamente, sendo importante conhecer as mais 
importantes e utilizadas na documentação da linguagem em MDN (2022);
 ● As linhas 9 a 14 testam a propriedade navigator.cookieEnabled, verificando 
se a mesma é true ou false. Se verdadeira, a linha 10 é executada e mostra 
uma janela pop-up no navegador de internet com a respectiva mensagem. 
Caso contrário, se falsa, a linha 13 é executada e também mostra uma janela 
pop-up com a mensagem configurada.
 Ademais, é interessante observar o funcionamento de maisalguns eventos úteis e 
muito utilizados no desenvolvimento web front-end com Javascript. As figuras 16a e 16b 
apresentam uma implementação com vários deles.
Figura 16a: Documento HTML para a utilização de alguns eventos de Javascript
Fonte: Próprio autor (2022).
 Digite o código apresentado na Figura 16a num editor de textos simples ou IDE de 
sua escolha. Ao finalizar, salve o arquivo num local de sua preferência com a extensão 
.html. As considerações principais a serem destacadas no programa são as seguintes:
 ● Como feito, anteriormente, na linha 4 indicamos que a página HTML utilizará 
o script utils.js. Neste arquivo definimos e criamos nossas próprias funções;
 ● A linha 8 cria um campo para inserção de texto simples e associa seu evento 
onchange à função transformaMaiusc. Ao inserir algum texto, Javascript 
identifica a mudança no estado do elemento e dispara o evento onchange 
dele, verificando se há uma função que o trata;
 ● As linhas 10 a 12 criam uma moldura para a demonstração dos eventos 
onmouseover e onmouseout, associando cada um a uma respectiva função 
de tratamento;
 ● A linha 14 cria um campo para inserção de texto simples e associa seu evento 
onkeydown à função denominada escrever.
 Agora, note o código Javascript apresentado na Figura 16b. Dê atenção aos 
comentários de linha ao longo do programa:
53
Figura 16b: Utilização de alguns eventos mais comuns de Javascript
Fonte: Próprio autor (2022).
 Digite o código Javascript apresentado na Figura 16b. Ao finalizar, salve o arquivo 
num local de sua preferência com a extensão .js, por exemplo, utils.js. Os pontos a serem 
destacados no programa são os seguintes:
 ● As linhas 18 a 21 definem e criam a função transformaMaiusc, cuja tarefa é 
transformar uma string inteira em letras maiúsculas. Na linha 19 sua variável 
local texto é criada e recebe o elemento cujo id é ‘nome’ vindo do documento 
que chamou a função. Em seguida, na linha 20 todo o conteúdo da variável 
texto é transformado para caixa alta utilizando a já conhecida função 
toUpperCase;
 ● As linhas 24 a 26 definem e criam a função movSobre, que recebe um 
parâmetro do tipo objeto e tem a tarefa de mudar o conteúdo interno de um 
componente HTML com o método innerHTML. Essa mudança de conteúdo 
acontece quando o usuário passa o ponteiro do mouse sobre a moldura div 
que chamou a função movSobre, tratadora do evento onmouseover;
 ● Por sua vez, as linhas 29 a 31 definem e criam a função movFora, que também 
recebe um único parâmetro do tipo objeto. Igualmente, a função realiza 
a tarefa de mudar o conteúdo interno de um componente HTML com o 
método innerHTML. Porém, a mudança do conteúdo do elemento acontece 
quando o usuário retira completamente o ponteiro do mouse da moldura 
div chamadora da função movFora, tratadora do evento onmouseout;
 ● Finalmente, as linhas 34 a 37 definem e criam a função escrever, que também 
recebe apenas um parâmetro. Por padrão, o evento onkeydown configura 
esse parâmetro na função que o trata. Na linha 35 uma variável local 
54
VAMOS PENSAR?
Na Figura 15b o código das linhas 9 a 14 pode ser substituído por apenas uma única linha 
de código com a utilização do operador condicional ternário de Javascript. A estrutura 
básica desse comando é: condition ? expressao1 : expressao2. Pesquise e implemente a 
solução utilizando esse compacto e eficiente comando. Na Figura 15b o código das linhas 
9 a 14 pode ser substituído por apenas uma única linha de código com a utilização do 
operador condicional ternário de Javascript. A estrutura básica desse comando é: condition 
? expressao1 : expressao2. Pesquise e implemente a solução utilizando esse compacto e 
eficiente comando.
DOM não é uma linguagem. É uma interface de programação para os documentos HTML e 
XML, provendo uma representação orientada a objetos das páginas da web.
FIQUE ATENTO
armazena o código decimal da tecla pressionada pelo usuário. Na linha 
36 o valor dessa variável é testada com o número inteiro 27, cujo valor é o 
padronizado na tabela Unicode para a tecla ESC. Se o teste for verdadeiro, 
uma janela pop-up aparece na tela do navegador de internet com uma 
mensagem configurada.
 Assim, note que o desenvolvimento com os elementos e métodos da DOM e os 
eventos de Javascript não é algo extremamente difícil. Se o desenvolvedor entende 
bem a estrutura da DOM e como os componentes interagem entre si, selecionando 
e modificando e manipulando conteúdos através de atributos, métodos e funções, já 
conseguiu progredir bastante.
 Saiba que DOM foi implementada para ser independente de qualquer linguagem 
computacional (MDN, 2022). Assim, Javascript é uma das tecnologias que utilizam 
DOM e se valem do seu grande rol de ferramentas para enriquecer o desenvolvimento 
web profissional. Dessa maneira, apenas a prática e o treinamento proporcionarão ao 
desenvolvedor a experiência necessária para utilizar bem DOM e criar soluções sérias e 
robustas para a web.
 Nesse cenário, a grande aliada do desenvolvedor web é a documentação da 
linguagem. Tire tempo para ler, pesquisar e implementar os vários exemplos que 
nela aparecem. Não se intimide com a quantidade de elementos e componentes 
disponibilizados por Javascript. Entenda que, à medida que a necessidade aparecer, a 
documentação lhe ajudará a encontrar e utilizar as ferramentas específicas para a sua 
demanda.
55
1. Das opções a seguir, escolha a que descreve o evento Javascript que é disparado 
quando um formulário HTML é submetido:
a) onload
b) onreset
c) onsubmit
d) onclick
e) onkeyup
2. Sobre o método getElementById, considere as alternativas abaixo e escolha a correta:
a) O método não retorna null se o elemento não existir.
b) Não é um dos métodos mais comuns e utilizados no desenvolvimento web com 
Javascript.
c) O método pode ser utilizado apenas com componentes do tipo button e list.
d) O método retorna um elemento com um valor especificado.
e) O método se tornou obsoleto com a nova especificação de Javascript.
3. A respeito da API DOM (Document Object Model) é correto afirmar:
a) É uma linguagem de programação amplamente utilizada.
b) É uma interface de programação para documentos HTML e XML.
c) Foi implementada especificamente para a utilização com Javascript.
d) Não utiliza o conceito de orientação a objetos para a representação de documentos.
e) Foi descontinuada após o lançamento da última versão de Javascript.
4. A figura a seguir apresenta a estrutura em árvore de uma página HTML simples, tal 
qual definida pela DOM:
FIXANDO O CONTEÚDO
Fonte: Flanagan (2013, p. 352).
56
A partir da análise da figura, é possível concluir corretamente que:
a) A raiz da árvore sempre é o ultimo elemento.
b) O nó <p> possui dois nós filhos.
c) O nó Document sempre é a raiz da árvore.
d) O nó <h1> é pai do nó <body>.
e) A estrutura em árvore apresentada na figura está incorreta.
5. Na linguagem Javascript, o evento que é disparado quando o document é carregado 
na tela do navegador de internet é:
a) onload.
b) onreset.
c) onkeyup.
d) onfocus.
e) onunload.
6. Considere a instrução abaixo escrita em Javascript e, em seguida, escolha a opção 
correta dentre as assertivas:
var texto = document.getElementById(“nome”);
a) A instrução foi escrita incorretamente.
b) A variável texto receberá o conteúdo completo do documento HTML.
c) A instrução irá disparar uma mensagem de erro pelo interpretador Javascript.
d) A variável texto é uma tratadora do evento disparado pelo método getElementById.
e) A variável texto receberá o conteúdo do elemento cujo id é “nome”.
7. Por definição, innerHTML é:
a) A propriedade que manipula todo o conteúdo de uma página HTML.
b) Um novo método definido pela versão mais atual de Javascript.
c) Um evento que retorna o conteúdo HTML de um componente específico.
d) A propriedade que define ou retorna o conteúdo HTML.
e) Uma propriedade descontinuada e obsoleta.
8. Por definição, uma função manipuladora ou tratadora de um evento específico é:
a) Uma rotina que disparaum erro para o interpretador Javascript.
b) Uma rotina que encerra a execução do programa Javascript.
c) Um trecho de código importado de uma linguagem determinada.
d) Um método nativo da linguagem Javascript.
e) Um procedimento que cria código para o tratamento do evento disparado.
57
JAVASCRIPT ORIENTADA 
A OBJETOS
58
 Até esta unidade do livro utilizamos diversos objetos nativos da linguagem 
Javascript e objetos disponibilizados pela API DOM para realizarmos tarefas em nossos 
programas. Javascript disponibiliza uma grande gama de objetos em sua implementação, 
o que a torna uma linguagem de programação baseada em objetos (DEITEL, 2008).
 “Objetos são um modo natural de pensar a respeito do mundo” (DEITEL, 2008, p. 192). 
Assim, naturalmente, os humanos pensam em termos de objetos e suas propriedades. 
Dessa forma, os desenvolvedores de linguagens de programação perceberam que 
modelar os problemas do cotidiano em termos de objetos, atributos e métodos é uma 
abordagem eficaz, produtiva e intuitiva.
 Nesse contexto, os objetos possuem atributos próprios, como forma, tamanho, 
peso, cor etc. Ademais, possuem também comportamentos, os quais conferem um 
caráter dinâmico a eles. Por exemplo, alguns comportamentos comuns a um objeto do 
tipo carro são: ligar, desligar, acelerar, frear, parar e assim por diante. No paradigma de 
programação orientada a objetos, comportamentos são mais comumente conhecidos e 
referenciados como métodos. Por sua vez, as características e propriedades dos objetos 
são citadas pelo seu sinônimo atributos.
 Em síntese, a programação orientada a objetos "modela o software em termos 
semelhantes àqueles que as pessoas usam para descrever objetos do mundo real" 
(DEITEL, 2008, p. 192). Essa modelagem foca na construção de soluções em termos 
dos objetos inerentes aos problemas abordados, definindo seus atributos, métodos 
e relacionamentos com outros objetos pertencentes ao domínio da solução de cada 
cenário.
5.1 OBJETOS, ATRIBUTOS E MÉTODOS
 Uma das características mais importantes da programação orientada a objetos é 
o encapsulamento. Encapsular significa embrulhar e, no contexto do desenvolvimento 
orientado a objetos, implica esconder os aspectos de implementação dos objetos, isto 
é, seus atributos e métodos, de modo que eles sejam acessíveis somente através de 
operações estritamente definidas e permitidas pelo programador. Essa característica é 
muito desejável e é amplamente divulgada como uma boa prática de programação, pois 
expõe somente aquilo que o desenvolvedor deseja através de interfaces bem definidas e 
projetadas (DEITEL, 2008).
 Para entender melhor o conceito de encapsulamento, considere um objeto do tipo 
carro. O usuário tem acesso a diversas operações desse objeto através de suas interfaces 
disponíveis: ligar através do painel de ignição, acelerar e frear através dos pedais, 
virar para a direita ou esquerda por meio do volante e assim por diante. No entanto, 
para realizar tais operações o usuário não precisa saber como o sistema de ignição é 
projetado e implementado ou como os pedais do carro se comunicam com o motor e 
outras partes do veículo. De maneira semelhante, ao utilizar sistemas computacionais, 
os desenvolvedores não precisam e, muitas vezes, não querem expor as propriedades e 
operações de suas soluções, bastando disponibilizar para os usuários finais as interfaces 
para a utilização dos seus produtos.
 Nessa perspectiva, surgiram os métodos getters (seletores) e setters (modificadores). 
Um método get é responsável pelo acesso às propriedades ou operações de um 
5.2 GETTERS/SETTERS
59
determinado objeto. Por sua vez, um método set vai mais além, modificando tais atributos 
e comportamentos (FLANAGAN, 2013).
 Nesse sentido, a linguagem Javascript disponibiliza vários getters e setters para os 
desenvolvedores web. Por exemplo, utilizamos várias vezes o método getElementById 
na implementação de algumas tarefas, embora não conheçamos detalhes de sua 
construção. Um exemplo de método setter de Javascrito é setAttribute, o qual define o 
valor de um atributo no elemento especificado. Se o atributo já existir, o valor é atualizado 
ou, caso contrário, um novo atributo será incluído com o nome e valor especificados 
(MDN, 2022).
 Classe é um conceito fundamental em programação orientada a objetos. Conforme 
Deitel (2008), uma classe é um tipo definido pelo próprio desenvolvedor, podendo ser 
associada à ideia de um molde para a modelagem de objetos do tipo criado. Assim, uma 
classe Carro poderá criar objetos desse tipo, contendo suas propriedades e operações 
inerentes à natureza dos carros.
 Numa analogia interessante, Deitel (2008, p. 193) menciona que “classes são para 
objetos o que plantas são para casas”. Nesse sentido, pense em classes como fábricas 
de objetos específicos do tipo definido por elas. Ademais, no contexto da programação 
orientada a objetos, a criação de um objeto de uma classe é também conhecida como 
instanciação desse objeto. Por exemplo, um objeto da classe Carro e um objeto da classe 
Pessoa são instâncias específicas de cada classe particular.
 Por definição, a partir de ECMAScript 2015, Javascript disponibiliza várias classes 
muito úteis (MDN, 2022). Por exemplo, a classe Array oferece vários atributos e métodos 
para a utilização e manipulação de vetores: o atributo length retorna o tamanho do 
array, o método split divide um array, push e pop inserem e removem itens do arranho, 
respectivamente, e assim por diante. Adicionalmente, a “classe Date define objetos 
que representam datas. A classe RegExp define objetos que representam expressões 
regulares” (FLANAGAN, 2013, p. 29). No entanto, o programador pode e deve criar suas 
próprias classes que serão úteis na construção das soluções dos seus problemas.
 Para a declaração de uma classe em Javascript, a palavra-chave class deve ser 
utilizada. Observe o exemplo a seguir, em que a classe Retangulo é definida:
5.3 CLASSES
Figura 17: Declaração da classe Retângulo em Javascript
Fonte: MDN (2022).
60
A utilização de this é ampla e merece um estudo aprofundado. Para um estudo 
completo dessa palavra especial, consulte : https://mzl.la/3WOS3ht. Acesso em 30 
jan. 2023.
FIQUE ATENTO
 Na Figura 17 note na linha 1 a utilização da palavra-chave class seguida do nome 
escolhido para a classe. As linhas 3 a 6 criam um método especial com a palavra reservada 
constructor. Esse método, como o próprio nome indica, é o construtor oficial da classe, 
ou seja, define que todo objeto da classe deve ser criado da maneira especificada por 
ele. Utilizar construtores de classes é uma maneira de manter o controle na forma em 
que os objetos específicos serão criados. No exemplo da Figura 17 definimos que todo 
objeto retângulo sempre será criado a partir dos parâmetros altura e largura.
 Na linha 5 da Figura 17 note a utilização da palavra especial reservada this. Ela 
vincula a atribuição ao objeto dentro da função onde está inserida. Em outras palavras, 
this ordena o seguinte: atribua os novos valores de altura e largura a este objeto específico. 
Assim, this sempre se refere ao objeto ou atributo no contexto em que foi evocado.
 Nas linhas 9 a 12 da Figura 17 um método getter chamado area é definido. Sua 
função é chamar a função calculaArea do objeto que o utiliza. Note que interessante: ao 
utilizar o método getter citado, o usuário nem saberá que existe um método chamado 
calculaArea no sistema. Isso é o encapsulamento em ação, pois expõe apenas a interface 
necessária para que o usuário realize o que necessita.
 A linha 20 da Figura 17 cria uma instância da classe Retângulo denominada 
quadrado, cujos parâmetros para sua criação são altura e largura iguais a 10 unidades. 
Observe que, assim como acontece na maioria das linguagens orientadas a objetos 
como Java, C# e C++, a palavra-chave new é utilizada para instanciar (criar) um objeto.
 Por sua vez, a instrução final na linha 21 da Figura 17 utiliza a função nativa console.
log, que é muitoútil para criar pontos de debug no código fonte. Pontos de debug 
servem para mostrar ao programador evidências de que o programa está executando 
corretamente, exibindo os conteúdos de variáveis, valores de retornos de funções e 
métodos etc. A função console.log tem por objetivo exibir uma mensagem no console 
do navegador de internet. Para visualizar a mensagem emitida por ela, é necessário que 
o usuário acesse o console do navegador. Essa ação possui variações devido às diferenças 
entre os navegadores de internet modernos. Por exemplo, no navegador Google Chrome 
o acesso à área do console pode ser realizado das seguintes maneiras:
 ● Utilizando a combinação de teclas Ctrl +Shift +J (no Windows) ou Cmd + 
Option + J (em um Mac);
 ● Clicando com o botão direito do mouse na página mostrada na tela e, em 
seguida, escolhendo a opção "Inspecionar" que aparece no menu suspenso;
 ● Utilizando a tecla de atalho F12 no teclado.
 Uma vez realizado um dos procedimentos acima, um painel lateral à direita da 
tela do navegador será aberto. Nela, caso não esteja selecionada, basta clicar na aba 
“Console”.
 Ademais, uma importante observação é que a função console.log não deve ser 
61
utilizada em sistemas que já estejam em produção, ou seja, disponíveis na web. Essa é 
uma forte recomendação da própria documentação de Javascript disponível em MDN 
(2022).
O objeto console de Javascript disponibiliza várias outras funções além de 
console.log. Conhecê-las é muito útil no desenvolvimento web front-end. Para 
isso, acesse a documentação da linguagem em https://mzl.la/3kVfx7g. Acesso 
em 30 jan. 2023.
BUSQUE POR MAIS
 Finalmente, outro conceito muito importante no desenvolvimento orientado a 
objetos é a herança. Conforme apontado por Deitel (2008, p. 193), a herança se configura 
quando "novas classes de objetos são derivadas pela absorção de características das 
classes existentes e o acréscimo de características exclusivas".
 Por exemplo, considere uma classe Animal que possui um atributo patas e um 
método simples comer. Ademais, considere também uma classe Gato que possui um 
método miar. Baseado no mundo real, sabemos que um gato é um animal e, além 
de miar, também come como qualquer outro animal. Sem a utilização do recurso de 
herança, o método comer precisaria ser escrito na classe Animal e também na classe 
Gato, com a cópia total e literal das instruções. Ao utilizar a herança, essa duplicação de 
código não é necessária, tornando o código muito mais elegante e limpo. A Figura 18 
apresenta a implementação em Javascript do exemplo citado:
5.4 HERANÇA
Figura 18: Exemplo de utilização de herança em Javascript
Fonte: Próprio autor (2022).
62
VAMOS PENSAR?
No exemplo apresentado na Figura 18, qual comportamento pertencente a todo animal 
você inseriria, de modo a disponibilizá-lo a todas as suas subclasses? Esquematize tal 
método e o implemente na prática com Javascript.
 Na Figura 18 dê atenção às linhas 2 a 11. Nelas há a definição da classe Animal, a qual 
é nossa superclasse. Uma superclasse é aquela da qual outras classes herdarão atributos 
ou métodos. Essas classes são chamadas de subclasses, como é o caso da classe Gato, 
cuja definição aparece nas linhas 14 a 23 da referida figura.
 A herança se configura com a utilização da palavra-chave reservada extends 
de Javascript. Quando extends aparece na assinatura de uma classe, o interpretador 
identifica que ela é uma subclasse herdeira de uma superclasse. Note que, no exemplo 
considerado, o método comer da superclasse Animal não precisou ser reescrito. 
A instrução extends automaticamente incorpora todos os atributos e métodos da 
superclasse à classe filha. Dessa maneira, ao executar o código presente na Figura 18, as 
mensagens que aparecem nas linhas 9 e 21 serão escritas no console do navegador de 
internet, conforme pode ser visto na Figura 19 a seguir:
 Na Figura 19 note as duas mensagens que foram apresentadas. O console indica 
que elas vieram das linhas 9 e 21, respectivamente, como mencionado anteriormente. 
Assim, através do recurso de herança, o objeto do tipo Gato que criamos herdou o 
método comer da superclasse Animal com todas as suas instruções implementadas.
 Dessa maneira, implemente os exemplos apresentados nessa seção. Faça testes, 
reescrevendo instruções, adicionando ou removendo atributos e métodos de classes. 
Além da classe Gato mostrada na Figura 18, experimente inserir uma classe que representa 
outro animal com suas características e comportamentos únicos. Assim, você solidificará 
os importantes conceitos apresentados nesta unidade, os quais são fundamentais para 
o desenvolvedor web moderno.
Figura 19: Exibição de mensagens no console do navegador Google Chrome
Fonte: Próprio autor (2022).
63
FIXANDO O CONTEÚDO
1. No contexto da orientação a objetos, uma subclasse herda as características de uma 
superclasse através da utilização da palavra-chave reservada:
a) typedef.
b) typeof.
c) extends.
d) herance.
e) class.
2. Na programação orientada a objetos, métodos getters e setters são muito úteis, 
principalmente por promoverem a boa prática do encapsulamento. Nesse sentido, 
dentre as alternativas abaixo, escolha a correta:
a) Métodos setters são conhecidos como métodos selecionadores.
b) Métodos getters são conhecidos como métodos modificadores.
c) A documentação de Javascript não recomenda o uso de getters e setters.
d) Um método set é usado para modificar um determinado atributo.
e) Um método get deve ser utilizado uma única vez dentro de uma classe.
3. A técnica de receber atributos ou métodos legados de uma classe pai, utilizada por 
uma ou mais classes filhas é conhecida como:
a) Polimorfismo.
b) Encapsulamento.
c) Acoplamento.
d) Coesão.
e) Herança.
4. Os navegadores de internet modernos possuem algumas ferramentas que auxiliam 
muito o trabalho dos desenvolvedores web. Dentre elas, uma muito útil e conhecida é:
a) Terminal de comandos.
b) Console.
c) Pop-up.
d) IDE.
e) Editor de texto.
5. Na modelagem de soluções computacionais utilizando o paradigma da orientação a 
objetos, os atributos dos objetos podem ser definidos como:
a) Métodos específicos criados pelo programador.
b) Constantes estáticas definidas pelo programador.
c) Funções herdadas nativamente da linguagem Javascript.
d) Mecanismos para a mudança de comportamento dos objetos.
64
e) As propriedades inerentes a cada objeto específico.
6. Javascript define palavras-chave especiais para a definição de uma classe e a criação 
de um novo objeto. São elas, respectivamente:
a) class e extends.
b) typedef e new.
c) class e new.
d) new e typeof.
e) class e construct.
7. Na programação orientada a objetos, a instanciação de um objeto de uma determinada 
classe é definida como:
a) A criação de um novo objeto da classe.
b) A criação de um novo atributo de um objeto da classe.
c) A criação de um novo método de um objeto da classe.
d) A atualização de um método da classe.
e) A seleção de um atributo de um objeto da classe.
8. No desenvolvimento com o paradigma orientado a objetos, a utilização do recurso de 
herança proporciona alguns benefícios, sendo um deles, a reutilização de código. Nesse 
sentido, analise a figura a seguir e, dentre as alternativas, escolha a correta:
Fonte: Disponível em: https://bit.ly/3HmfUPM. Acesso em 30 jan. 2023.
a) A superclasse é a classe Animal.
b) A classe Homem não é classe filha da classe Mamífero.
c) O diagrama de classes considerado está invertido.
d) A classe Mamífero herda as características das classes Cachorro e Homem.
e) A superclasse de Ave é Beija-Flor.
65
FRAMEWORKS 
FRONT-END PARA 
DESENVOLVIMENTO 
WEB
66
6.1 ANGULAR
 A necessidade de agilidade no desenvolvimento de soluções computacionais 
no mundo moderno alavancou a utilização de ferramentas disponíveis, muitas 
gratuitamente. Como abordado, anteriormente, as IDEs (Integrated Development 
Environment) fazem parte desse rol de ferramentas, as quais facilitam muito o trabalho 
dos desenvolvedores de softwaree aplicações.
 Dessa forma, muitas comunidades de programadores se reuniram e criaram 
projetos para o desenvolvimento de soluções sérias que padronizassem a maioria das 
tarefas comuns realizadas durante os processos de criação de software e aplicações. Tais 
soluções objetivam otimizar o tempo e recursos, prevenindo também a “recriação da 
roda”, ou seja, que os times de programadores tenham que criar do zero soluções que já 
estão prontas e disponíveis para utilização.
 Nesse cenário, surge o framework (estrutura, numa tradução livre em português). 
Um framework é uma biblioteca ou conjunto de bibliotecas que “fornecem aos 
desenvolvedores ferramentas utilizadas e testadas para a criação de aplicativos [...] 
interativos e escalonáveis” (MDN, 2022). Conforme comenta Flanagan (2013, p. 330), a 
“vantagem óbvia de usar uma estrutura é que se trata de uma API de nível mais alto que 
permite fazer mais com menos código. Uma estrutura bem escrita também vai tratar de 
muitos dos problemas de compatibilidade, segurança e acessibilidade”.
 Assim, mais recentemente, a experiência na utilização dos frameworks passou 
a ser essencial no trabalho dos desenvolvedores, de modo que é muito importante e 
necessário conhecer, pelo menos basicamente, os mais usados no cotidiano. No cenário 
do desenvolvimento web front-end, há vários deles disponíveis e bem conceituados nos 
quesitos confiabilidade, escalabilidade, robustez e segurança. Como exemplos, podemos 
citar o Angular, Vue e React.
 Angular é um framework open-source (de código aberto) desenvolvido pela 
empresa Google em parceria com vários desenvolvedores ao redor do mundo. Sua 
primeira versão ficou conhecida como AngularJS. No entanto, os desenvolvedores 
remodelaram completamente o framework, incorporando novas práticas, metodologias 
e lições aprendidas a partir da versão inicial (GUEDES, 2017).
 Nosso destaque será dado ao Angular 2, cuja base, estrutura, funcionamento e 
organização foram mantidos nas versões posteriores. Para fins didáticos, apenas o 
nome Angular será utilizado para se referir ao framework a partir da sua versão 2 em 
diante. No presente momento, a versão atual é o Angular 12, sendo o site oficial dos 
desenvolvedores encontrado no endereço https://angular.io/. Tal site é o local de referência 
para consultar a documentação completa do Angular, realizar download das versões e 
receber notícias acerca da ferramenta.
 Conforme explica Guedes (2017, p. 1), o Angular 2 é “um framework para 
desenvolvimento front-end com HTML, CSS e TypeScript que, no final, é compilado para 
VAMOS PENSAR?
O desenvolvedor web front-end precisa conhecer todos os frameworks modernos disponíveis 
no mercado? Isso seria razoável e produtivo?
67
 Após a instalação dos sofwares/aplicativos elencados no Quadro 6, é possível criar 
projetos baseados no Angular. Um destaque especial deve ser dado ao Angular CLI 
(Command Line Interface), pois “traz uma série de comandos para executar determinadas 
tarefas, retirando a responsabilidade do programador em codificar tudo no projeto” 
(GUEDES, 2017, p. 32). A interface Angular CLI possui diversos comandos úteis para a 
criação e gerenciamento de projetos que utilizem o framework Angular. O Quadro 7 
apresenta a nomenclatura e descrição dos mais importantes e utilizados.
Comando Descrição
ng new <nome do projeto> Cria um novo projeto numa estrutura de pas-
tas, contendo todos os arquivos necessários 
para a aplicação.
ng serve Cria um servidor local para a execução das 
aplicações via navegador.
ng generate Cria todos os objetos necessários ao projeto, 
como, por exemplo, componentes.
JavaScript”. Sua utilização possibilita a criação de páginas web simples até a construção 
de grandes aplicações e sistemas robustos, incluindo aplicativos mobile, isto é, para 
dispositivos móveis.
 A documentação oficial destaca que o desenvolvimento com Angular é baseado em 
componentes. Cita que “componentes definem áreas de responsabilidade na interface 
do usuário que permitem reutilizar conjuntos de funcionalidades” (GOOGLE, 2022). 
Assim, componentes são blocos de construção que compõem uma aplicação. Outra 
característica fundamental de Angular é o desenvolvimento de soluções web front-end 
baseadas em SPA (Single Page Applications), cujo principal objetivo é concentrar toda 
a funcionalidade da aplicação numa única página gerenciadora do conteúdo, tráfego e 
demais fluxos.
 Em seu livro, Guedes (2017) ensina o passo-a-passo para a configuração do ambiente 
de desenvolvimento para a utilização do Angular. Como o autor destaca, Angular trabalha 
em associação com várias ferramentas de desenvolvimento, como Typescript, Node.JS, 
NPM etc. O Quadro 6 sintetiza tais passos, destacando os locais oficiais para download 
das ferramentas e artefatos necessários ou, caso não seja preciso realizar o download, os 
comandos para a instalação direta. É muito importante ressaltar que tal configuração 
é destinada ao sistema operacional Windows, havendo algumas variações para outros 
sistemas operacionais, como Linux e MacOS. Tais variações devem ser consultadas nos 
sites oficiais dos mantenedores de cada ferramenta, onde os mesmos destacam os 
comandos e procedimentos voltados para cada sistema operacional específico. 
Software/Aplicativo Download/Comando Comando para 
verificação da 
instalação
Node.js https://nodejs.org/ node -v
NPM (node package manager) Vem com o Node.js npm -v
Typescript npm install -g typescript tsc -v
Anglular CLI npm install -g anglular-cli ng -v
Quadro 6: Softwares/Aplicativos necessários para o desenvolvimento com Angular
Fonte: Próprio autor (2022).
68
ng lint Organiza o código de acordo com as boas 
práticas de programação definidas na docu-
mentação do Angular.
ng test Executa testes unitários dos componentes do 
projeto.
Quadro 7: Comandos mais utilizados do Angular CLI
Fonte: Adaptado de Guedes (2017).
Após o AngularJS, o Angular 2 em diante foi totalmente reescrito e remodelado. Assim, não 
é mais recomendado o estudo do AngularJS se você deseja aprender a utilizar o Angular 
em seus projetos. Comece pelo Angular 2 e posterior.
FIQUE ATENTO
 Então, agora é possível criar um projeto baseado no Angular. Assim, escolha uma 
pasta onde deseja que o projeto fique localizado. Nessa pasta, digite o comando ng new 
<nome do seu projeto>. A conexão com a internet deve estar ativa, uma vez que, todas 
as dependências para o projeto Angular serão baixadas, automaticamente. Para abrir 
o projeto e visualizar toda a estrutura padrão montada pelo Angular CLI é muito útil 
e interessante a utilização de uma IDE. Como exemplo, utilize o Visual Studio Code ou 
qualquer outra de sua preferência.
 Após a criação do projeto, acesse o prompt de comando da sua IDE ou do próprio 
sistema operacional e digite ng serve para executar o servidor local na sua máquina. 
Nesse ponto, é fundamental observar as mensagens que aparecem na tela do terminal 
de comando. Se tudo ocorreu bem, você deverá observar a mensagem indicando que o 
serviço foi iniciado com sucesso, bem como a porta onde o mesmo está sob execução. 
Nesse ponto, abra o navegador de internet de sua preferência e digite a instrução 
localhost:porta, onde o número da porta é o mesmo mostrado no prompt de comando 
após a execução de ng serve. Como exemplo, a Figura 20 mostra a execução de um 
projeto nomeado como “my-first-app!” baseado no Angular num navegador de internet 
do usuário:
Figura 20: Projeto Angular executando no navegador de internet
Fonte: Próprio autor (2022).
69
Quadro 8: Softwares/Aplicativos necessários para o desenvolvimento com Vue.js
Fonte: Próprio autor (2022).
 Ademais, as próximas seções são dedicadas a apresentar as funcionalidades dos 
frameworks, Vue e React, dando um foco especial ao React.
 Após a instalação dos sofwares/aplicativos elencados no Quadro 8 é possível criar 
projetos baseados no Vue. Note que, semelhante ao Angular, Vue possui sua interface de 
linha de comandospara a rápida criação de projetos e ajuda ao desenvolvedor front-end. 
Conforme destaca Incau (2017, p. 10), a Vue CLI (Command Line Interface) disponibiliza 
“templates para diversos workflows diferentes. Em poucos minutos, podemos ter uma 
aplicação rodando com diversas tarefas predefinidas”. Dessa maneira, a utilização da 
Vue CLI é a melhor escolha para a gerência dos projetos com Vue, pois facilita todos os 
6.2 VUE
 Vue.js ou, simplesmente, Vue (se pronuncia View) também é um moderno 
framework front-end open-source (código aberto). Foi criado por Evan You em 2014, 
à época colaborador na Google Creative Labs (INCAU, 2017). Semelhante ao Angular, 
Vue utiliza a metodologia SPA para o desenvolvimento web, simplificando a gerência 
de conteúdos e fluxos e proporcionando uma melhor experiência de navegação para o 
usuário final.
 Conforme aponta Incau (2017, p. 2), embora Vue tenha “nascido como uma 
ferramenta de prototipação rápida, agora ele já pode ser usado para criação de grandes 
e escaláveis aplicações reativas”. Como exemplos, o autor cita duas grandes empresas da 
área da tecnologia moderna que utilizam Vue: Xiaomi e Alibaba.
 Um dos grandes diferenciais de Vue é o fato de não ser intrusivo, ou seja, não 
possue código e estrutura rígidos que forcem o desenvolvedor a seguir estritamente um 
padrão no desenvolvimento das aplicações, como acontece com o Angular, por exemplo. 
Assim, a maioria da codificação de Vue é feita com a linguagem Javascript pura, sendo 
limpo e claro. Outra característica muito atraente de Vue é a sua alta flexibilidade, pois 
pode trabalhar em conjunto com várias bibliotecas úteis disponíveis atualmente.
 A documentação oficial completa do framework Vue pode ser encontrada em 
https://vuejs.org/. É fundamental consultá-la a fim de entender o funcionamento da 
ferramenta e acessar exemplos de aplicações disponíveis gratuitamente. Adicionalmente, 
é possível encontrar uma comunidade brasileira muito forte que trabalha e contribui 
com Vue em https://br.vuejs.org/. No presente momento, a versão atual estável é Vue 
3.2.45.
 Na obra de Incau (2017) é possível acessar um passo a passo para a configuração 
do ambiente de desenvolvimento para a utilização do Vue.js. Como o autor destaca, 
Vue trabalha em associação com várias ferramentas de desenvolvimento. O Quadro 8 
resume tais passos, destacando os locais oficiais para download das ferramentas ou os 
comandos necessários para a instalação no sistema operacional Windows. 
Software/Aplicativo Download/Comando Comando para 
verificação da instalação
Node.js https://nodejs.org/ node -v
NPM (node package manager) Vem com o Node.js npm -v
Vue CLI npm install --global vue-cli vue -V
70
processos que envolvem desde a criação até a publicação da aplicação desenvolvida.
 Assim como a Angular CLI, a Vue CLI disponibiliza uma gama de comandos para a 
utilização do Vue como framework front-end. O Quadro 9 apresenta a nomenclatura e 
descrição dos mais importantes e utilizados.
Comando Descrição
vue create <nome do projeto> Cria um novo projeto numa estrutura de pastas, 
contendo todos os arquivos necessários para a 
aplicação.
npm run serve Cria um servidor local para a execução das 
aplicações via navegador.
npm run lint Organiza o código de acordo com as boas práticas 
de programação definidas na documentação do 
Vue.
Quadro 9: Comandos mais utilizados da Vue CLI
Fonte: Próprio autor (2022).
 Perceba que os comandos são bastante semelhantes aos da Angular CLI, mudando 
apenas parte da nomenclatura de alguns. É muito importante conhecer e entender os 
comandos mais utilizados estudando a documentação oficial do framework.
 Então, agora é possível criar um projeto baseado no Vue.js. Assim, escolha uma 
pasta onde deseja que o projeto fique localizado. Nessa pasta, digite o comando vue 
create <nome do seu projeto>. As mesmas sugestões para projetos Angular são válidas 
aqui: a utilização de uma IDE de sua preferência ajudará muito o seu trabalho como 
desenvolvedor web front-end; a conexão com a internet deve estar ativa, uma vez que, 
todas as dependências para o projeto Vue serão baixadas, automaticamente.
 Após a criação do projeto, acesse o prompt de comando da sua IDE ou do próprio 
sistema operacional e, dentro da pasta raiz, digite npm run serve para executar o servidor 
local na sua máquina. Dê atenção às mensagens que aparecem na tela do terminal de 
comando. Se tudo ocorreu bem, você deverá observar a mensagem indicando que o 
serviço foi iniciado com sucesso. Por padrão, Vue utiliza a porta 8080 para suas aplicações. 
Dessa forma, para visualizar a aplicação executando, basta digitar localhost:8080 na 
barra de endereços do navegador de internet. Como exemplo, a Figura 21 apresenta a 
execução de um novo projeto nomeado como “hello-myapp” baseado no Vue.js num 
navegador de internet do usuário:
Figura 21: Projeto Vue executando no navegador de internet
Fonte: Próprio autor (2022).
71
Quadro 10: Comandos mais utilizados da Create React CLI
Fonte: Próprio autor (2022).
 Note a simplicidade na criação de uma aplicação que utiliza o React como 
framework front-end. Com apenas dois comandos simples é possível criar toda a 
estrutura do projeto e disponibilizar a aplicação para execução via navegador.
 Realizados tais passos, é importante testarmos a ferramenta através de um 
exemplo. Nesse contexto, a última seção desta unidade tem por objetivo demonstrar a 
criação de um projeto básico utilizando o framework React.
 Com as ferramentas mencionadas na seção anterior devidamente instaladas, 
escolha uma pasta que será o local da aplicação a ser desenvolvida. Vá até essa pasta e, 
utilizando o prompt de comandos do sistema operacional ou o terminal de comandos 
de sua IDE, digite o comando: npx create-react-app first-react-app. Assim, toda a 
estrutura do projeto será criada. Para visualizar essa estrutura de pastas e arquivos, 
uma sugestão importante é abrir a pasta raiz da aplicação utilizando uma IDE. As IDEs 
modernas mostram toda a árvore organizada, muitas vezes identificando os arquivos 
6.3 REACT
6.4 EXEMPLO DE PROJETO COM REACT
 React, também referenciado com React.js ou ReactJS, é um framework Javascript 
destinado ao desenvolvimento web front-end. Assim como Angular e Vue, React é de 
código aberto e possui uma grande comunidade de colaboradores espalhados pelo 
planeta. Sua documentação oficial pode ser encontrada em português no site oficial 
https://pt-br.reactjs.org/.
 O framework React foi criado em 2011 pelo Facebook sendo, atualmente, mantindo 
também pelo Instagram e parceiros comerciais e individuais. Foi criado com foco no 
desenvolvimento de interfaces web ricas para o usuário, de forma componentizada e 
modular, à semelhança dos seus principais concorrentes, Angular e Vue (FACEBOOK, 
2022).
 A criação de aplicações utilizando React exige apenas dois requisitos: gerenciador 
de pacotes npm instalado e, também, o Nodejs. Novamente, a utilização de uma IDE de 
sua preferência é recomendada, uma vez que, facilita a codificação, a organização e a 
visualização da estrutura do projeto de maneira hierárquica.
 À semelhança de Angular e Vue, o React possui sua própria CLI (Command Line 
Interface), que disponibiliza uma gama de comandos para a gerência completa dos 
projetos construídos com o framework. Essa interface de linha de comandos deve ser 
instalada com o comando npm install -g create-react-app.
Ademais, o Quadro 10 apresenta a nomenclatura e descrição dos comandos mais 
importantes e utilizados disponibilizados pela Create React CLI:
Comando Descrição
npx create-react-app <nome do projeto> Cria um novo projeto numa estrutura de pastas, 
contendo todos os arquivos necessários para a 
aplicação.
npm start Cria um servidor local para a execução das 
aplicações via navegador.
72
Pratique implementando os diversos exemplos disponíveis nas documentações oficiais dos 
três frameworks que destacamos: Angular, Vue e React. Apenas com muito treinamento 
você irá adquirir maturidadee experiência no desenvolvimento web front-end profissional 
com frameworks modernos e Javascript.
BUSQUE POR MAIS
por tipos de linguagem de programação que contêm.
 Uma vez criada a aplicação e dentro da pasta raiz dela, execute o comando npm 
start. Um servidor local será iniciado, o qual ficará responsável por receber e responder 
às requisões do navegador de internet. Por padrão, tal servidor utiliza a porta 3000 para 
servir as aplicações clientes. Como exemplo, a Figura 22 apresenta a execução de um 
novo projeto nomeado como “first-react-app” baseado no React num navegador de 
internet do usuário:
Figura 22: Projeto React executando no navegador de internet
Fonte: Próprio autor (2022).
73
FIXANDO O CONTEÚDO
1. No contexto do desenvolvimento de software, ____________ são estruturas que 
disponibilizam códigos por meio de componentes e artefatos que auxiliam os 
desenvolvedores na construção de suas soluções. A lacuna deve ser preenchida pelo 
item:
a) Blocos.
b) Arquétipos.
c) Javascript.
d) Frameworks.
e) Diagramas.
2. Foi criado em 2011 pela empresa Facebook, sendo atualmente mantida pela mesma e 
por vários parceiros comerciais e individuais. Esse framework é:
a) Vue. 
b) Laravel.
c) Zend.
d) Angular.
e) React.
3. O comando ng new <nome do projeto> cria um novo comando em aplicações 
utilizando o framework:
a) React.
b) Angular.
c) Dojo.
d) Vue.
e) Django.
4. Dentre as alternativas a seguir, escolha aquela que descreve o gerenciador de pacotes 
necessário pela maioria dos frameworks front-end modernos:
a) nmp.
b) npm.
c) ng.
d) yast.
e) cli.
5. O comando npm start é responsável por inicial o servidor local em projetos baseados 
no framework.
a) React.
b) Vue.
74
c) Angular.
d) Yast.
e) CodeIgniter.
6. Dentre as alternativas a seguir, escolha aquela que cria um servidor local para a 
execução das aplicações via navegador de internet em aplicações baseadas no Vue.js:
a) npm start.
b) npm serve.
c) npm init.
d) ng init
e) npm run serve.
7. A partir de sua segunda versão, foi totalmente reescrito e remodelado, incorporando 
novas práticas, metodologias e lições aprendidas a partir da versão inicial. O framework 
citado é:
a) Laravel.
b) React.
c) Angular.
d) Vue.js.
e) Django.
8. No contexto do desenvolvimento web front-end, dentre as alternativas a seguir, 
escolha a correta:
a) Frameworks como Angular, Vue e React não possuem boa integração com a linguagem 
Javascript.
b) A utilização de uma IDE (Integrated Development Environment) é obrigatória no 
desenvolvimento utilizando frameworks modernos.
c) A utilização de uma IDE (Integrated Development Environment) facilita muito o 
trabalho do desenvolvedor ao utilizar frameworks em seus projetos.
d) O React, a partir de sua segunda versão, foi totalmente reescrito e remodelado.
e) O Vue.js foi descontinuado a partir de 2021.
75
RESPOSTAS DO FIXANDO O CONTEÚDO
UNIDADE 1
UNIDADE 3
UNIDADE 5
UNIDADE 2
UNIDADE 4
UNIDADE 6
QUESTÃO 1 C
QUESTÃO 2 D
QUESTÃO 3 B
QUESTÃO 4 A
QUESTÃO 5 B
QUESTÃO 6 E
QUESTÃO 7 E
QUESTÃO 8 C
QUESTÃO 1 C
QUESTÃO 2 B
QUESTÃO 3 C
QUESTÃO 4 E
QUESTÃO 5 D
QUESTÃO 6 A
QUESTÃO 7 C
QUESTÃO 8 A
QUESTÃO 1 D
QUESTÃO 2 C
QUESTÃO 3 C
QUESTÃO 4 B
QUESTÃO 5 E
QUESTÃO 6 A
QUESTÃO 7 E
QUESTÃO 8 E
QUESTÃO 1 C
QUESTÃO 2 D
QUESTÃO 3 B
QUESTÃO 4 C
QUESTÃO 5 A
QUESTÃO 6 E
QUESTÃO 7 D
QUESTÃO 8 E
QUESTÃO 1 C
QUESTÃO 2 D
QUESTÃO 3 E
QUESTÃO 4 B
QUESTÃO 5 E
QUESTÃO 6 C
QUESTÃO 7 A
QUESTÃO 8 A
QUESTÃO 1 D
QUESTÃO 2 E
QUESTÃO 3 B
QUESTÃO 4 B
QUESTÃO 5 A
QUESTÃO 6 E
QUESTÃO 7 C
QUESTÃO 8 C
76
REFERÊNCIAS BIBLIOGRÁFICAS
DEITEL, P. J.; DEITEL, H. M. Ajax, Rich Internet Applications e desenvolvimento Web 
para programadores. Tradução: Célia Taniwaki e Daneil Vieira. São Paulo: Pearson, 2008.
FACEBOOK. React: a javascript library for building user interfaces. Disponível em: 
<https://reactjs.org/>. Accesso em: 20 nov. 2022.
FLANAGAN, D. JavaScript: o guia definitivo. Tradução: João Eduardo Nóbrega Tortello. 
6. ed. Bookman Companhia Editora, 2013.
GOOGLE. Angular. Disponível em: <https://angular.io/>. Accesso em: 19 nov. 2022.
GUEDES, T. Crie aplicações com Angular: o novo framework do Google. Editora Casa 
do Código, 2017.
INCAU, C. Vue. js: Construa aplicações incríveis. Editora Casa do Código, 2017.
MDN. JavaScript básico. Disponível em: <https://developer.mozilla.org/pt-BR/docs/
Learn/Getting_started_with_the_web/JavaScript_basics>. Acesso em: 5 out. 2022.
SEGURADO, V. S. Projeto de interface com o usuário. São Paulo, SP. Pearson, 2016.
ZANETTI, H. A. P. (coautor). JavaScript descomplicado: programação para a Web, 
loT e dispositivos móveis. São Paulo: Erica, 2020. Disponível em: <https://integrada.
minhabiblioteca.com.br/books/9788536533100>. Acesso em: 05 out. 2022
77
graduacaoead.faculdadeunica.com.br

Mais conteúdos dessa disciplina