Nweghprog
Nweghprog
Anotações Prog.Js
Java-Script é uma linguagem de programação voltada para o desenvolvimento web Front-end, com tipagem
dinâmica e assíncrona.
console.log("Hello World");
JavaScript é executado pelo motor V8 no navegador Chrome e em outros. Atualmente, JavaScript está na versão
ECMAScript 2022.
Variaveis
Tipos de variáveis em js
Existem três tipos de variáveis: var, let e const.
A primeira é a forma mais antiga de declarar uma variável e a menos recomendada também, por ser dinâmica
demais. Ou seja, ela pode ser declarada e reatribuída diversas vezes no mesmo escopo, o que pode causar
muitos problemas.
Let e const são as mais utilizadas...
A variavel Let é de escopo em bloco e ela nao pode ser declarada duas vezes no mesmo escopo, essas
caracteristicas da variavel Let favorece uma maior precisão na hora de desenvolver codigos.
Const como Let tem seu escopo local e nao pode ter seu valor reatribuido, isto significa que Const ao ser
delcarado e ter seu valor atribuido ele nao podera ser modificado depois
Hoisting
O conceito de Hoisting nada mais é do que declarar as variaveis em um local onde antes de o codigo
precisar executar uma função ou tarefa, as informações necessarias (variaveis) ja foram declaradas.
Colocar as informações necessarias no topo de seu escopo.
Escopo de variavel
Escopo é o local onde a variavel é acessivel, isto tambem vale para funções. Existem dois tipos de
escopo: Global e Local
Anotações Prog.Js 1
let myGlobal = "global";
function myFunction() {
return myGlobal;
}
//aqui esta função e variavel são de escopo global, pois não estao restritas a nenhum
//bloco de codigo
function myFunction2 () {
let myLocal = "local";
}//esta variavel existe e esta disponivel dentro do escopo da função
//assunto de extrema importancia para a criação de algoritmos
// mais a frente sera abordado
Data Types
Tipos de dados primitivos
String
Number
Number são os numeros de todos os tipos, nao é preciso definir na variavel qual tipo de numero este é
Boolean
valores booleanos são extremamente importantes para a construção de algoritmos. Valores booleanos são
estritamente True ou False
Null e Undefined
aqui irei tratar os dois juntos, por suas diferenças serem ligeiramente diferentes.
> Undefined é quando uma variavel(ou função) esta sem valor ou não foi inicializada, isto torna ela
undefined por nao ter seu valor atribuido
> Null por sua vez é a ausencia de um valor que deveria ter sido atribuido ou entao uma ausencia
intencional em um contexto onde uma variavel deveria ter um valor valido
//aqui abordo conceitos que ainda nao lidei, mas mais a frente irei
const tarefa = {
descricao: "Fazer compras de supermercado",
usuarioAtribuido: null // usuarioAtribuido nao definido inicialmente deixando o campo null
};
Anotações Prog.Js 2
//podendo atribuir um valor no objeto
tarefa.usuarioAtribuido = "João";
Importante notar que quando um objeto é criado dentro de uma const, as propriedades não podem ser
alteradas, mas os valores de suas propriedades podem, como no exemplo.
Objetos são importantes para a organização de dados, eles são um conjunto de dados nomeados relacionados,
permitindo a organização e manipulação em grande escala de dados.
Mais acima foi dito que const não tem seus valores reatribuídos, mas neste caso, objetos em const podem
ter os valores das propriedades alterados.
BigInt
O metodo BigInt é usado para lidar com numeros muito grande, nativamente js nao tem suporte para numeros
com muitas casas, portanto é necesssario utilizar outros metodos alem dos convencionais para lidar com
tais numeros, por js ser uma linguagem voltada ao desenvolvimento web front-end, raramente sera
utilizado, mas importante ter conhecimento da existencia dele
Laços de repetições
While/For
While
Existem estruturas de repetições no Javscript para efetuar loops enquanto uma condição for True e esta
estrutura é otima para a criação de algoritmos como por exemplo, processamento de blocos de codigos que
precisam ser executados atualizando valores ate que uma determinada condição seja falsa assim dando fim a
estrutura de repetição. É preciso ter cuidado ao utilizar estas estruturas, pois se houver um erro na
logica sintatica do codigo ele pode cair em loop infinito.
O codigo vai ser executado pelo menos uma vez ate que a condição seja atendida e ao final terá um novo
valor ou uma ação completa.
Um exemplo real
while (contador < 5) { //estabelece uma condição para que o loop seja executado caso caso continuar True
//codigo a ser executado
console.log("Contagem: " + contador);
contador++; // o ++ é um operador de pós-incremento que atribui valor de uma variavel sendo seu valor proprio +1
//portanto ao final de cada loop a variavel passara sempre contador+1
}
Anotações Prog.Js 3
console.log("Loop concluído.");
//verificação do valor ao loop for completo
//sera imprimido no console o numero 6
Irei criar um pequeno código simples para demonstrar a utilização dessas duas estruturas, onde um loop é
criado para solucionar uma condição e então é verificado se o loop foi realmente concluido.
if (contador === 0) {
console.log("O loop não foi executado.");
} else {
console.log("O loop foi executado pelo menos uma vez.");
}
é importante notar que o interpretador do Javascript lê os códigos uma linha por vez como nós humanos, de
cima pra baixo da esquerda para a direita.
No exemplo, usamos uma variável chamada "contador" e a inicializamos com o valor 0 antes de entrarmos no
loop "while". Dentro do loop, aumentamos o valor do "contador" a cada passagem. Após a conclusão do loop,
verificamos o valor do "contador". Se o "contador" ainda estiver em 0, isso significa que o loop não foi
executado. Por outro lado, se o "contador" for maior que 0, isso indica que o loop foi executado pelo
menos uma vez.
Em resumo, estamos usando o "contador" para verificar se o loop "while" fez algum trabalho ou não. Se o
"contador" não mudar, significa que o loop não fez nada; caso contrário, ele fez alguma coisa.
Do While
Existe outra estrutura de repetição no Javascript que é o Do while. Esta estrutura tem uma função e
funcionamento muito semelhante ao While, sua forma sintatica é um pouco diferente e sua execusão acontece
de outra forma tambem.
um exemplo
do {
codigo a ser executado
} while (condição);
Após o interpretador ler “do” e executar o codigo ele verifica no “while” se a condição é valida ou não
para que ocorra uma repetição no codigo execuatevl, isto torna o Do While um laço de repetição que sempre
vai executar ao menos uma vez o codigo em contra ponto com o While que antes de executar o codigo
verifica a condição.
um exemplo real
do {
senhaDigitada = prompt("Digite a senha: "); //1
tentativas++; //2
Anotações Prog.Js 4
For (loop)
Como as estruturas de repetição ja apresentadas, o for tem sua sintaxe mais voltada a loops com
repetições em um numero conhecido de vezes, sendo um pouco mais especifico e tendo uma possibilidade
de controle maior a partir do numero de iterações(numero de vezes que as repetições vão acontecer).
Aqui esta a sintaxe basica
Dentro dos parâmetros começamos definindo a inicialização, isto é, a condição inicial do nosso
controle dentro do loop for.
Depois estabelecemos uma condição que será verificada a cada loop, se for true então o codigo será
executado até que após cada atualização na condição se torne falsa ao final, assim interrompendo o
loop.
No incremento é executado após cada iteração do loop e é usado para atualizar o valor da variável de
controle. Ele é geralmente usado para aumentar ou diminuir o valor da variável de controle.
Um exemplo real
Vale ressaltar que nem sempre a inicialização precisa ser passada, ela é opcional dependendo de como o
codigo esta escrito e como esse laço de repetição vai somar em toda a harmonia do codigo.
Os momentos onde a inicialização não é passada é quando ela ja esta declarada em outro local do
codigo ou a variavel simplismente esta fora do laço, como este exemplo:
let i = 0;
let sum = 50;
if (i % 2 === 0) {
sum += i;
}
console.log(`Valor de i: ${i}, Soma dos números pares: ${sum}`);
}
//o local sem inicialização esta somente com um ";", apos isso se inicia uma condicional que verifica se
//o resto da divisão da variavel i por 2 possui resto 0, sendo true
For in e For of
No javascript existe e em outras linguagens de programação existe as cadeias condicionas que nada mais
são que blocos de codigo executaveis diante uma situação passada nos seus parametros, com um exemplo o
entendimento fica mais facil
Anotações Prog.Js 5
//apos declarar o if abre os parametros e dentro dele é passado a condição necessaria para que o codigo seja executado entre as chaves
Operadores logicos
É de extrema importancia entender sobre os operadores condicionais, ja que eles são feitos para
estabelcer se aquele trecho de codigo sera ou não executa, se a condição é ou não verdadeira. vale dizer
que não necessariamente o codigo é executado somente quando a codição for passada ser verdadeira ja que
pode ser util querer executar uma ação caso uma situação for falsa.
//igualdade
if (x == y) {
// código a ser executado se x for igual a y
}
//desigual
if (x != y) {
// código a ser executado se x for diferente de y
}
//igualdade estrita
if (x === y) {
// código a ser executado se x for igual a y, sem conversão de tipo
}
//desiqualdade estritra
if (x !== y) {
// código a ser executado se x for diferente de y, sem conversão de tipo
}
//menor que
if (x < y) {
// código a ser executado se x for menor que y
}
//maior que
if (x > y) {
// código a ser executado se x for maior que y
}
//menor ou igual que
if (x <= y) {
// código a ser executado se x for menor ou igual a y
}
//maior ou igual que
if (x >= y) {
// código a ser executado se x for maior ou igual a y
}
//operador AND
if (x > 0 && y > 0) {
// código a ser executado se x e y forem ambos maiores que zero
}
//operador OR
if (x > 0 || y > 0) {
// código a ser executado se x for maior que zero OU y for maior que zero
}
//operador NOT
if (!condicao) {
// código a ser executado se a condição for falsa, Inverte o valor de uma condição
}
Esta cadeia condicional serve para criar algoritmos mais complexos podendo servir para criar pequenos
sistemas, sua estrutura é mais complexa tendo tambem a palavra reservada “else” onde sua execução
acontece quando o if não for executado por conta de a condição nos seus parametros não ser valida.
let nota = 4;
if (nota >= 5) {
//caso a nota for igual ou maior que 5 o console mostrara que aluno passou
console.log("Parabens, você passou!");
} else {
//caso contrario ele não passou
console.log("Sinto muito, você não passou.");
}
Esta possibilidade abre muitas opções, mas uma cadeia de duas condições ainda é muito limitado, porem no
javascript e em outras linguagens é possivel estender isso infinitamente, aqui esta um exemplo
Anotações Prog.Js 6
console.log("Aprovado com nota B");
} else if (nota >= 70) {
console.log("Aprovado com nota C");
} else {
console.log("Reprovado");
}
Switch Case
Esta estrutura de condições é semelhante a vista anteriormente, porem com algumas diferenças.
Ao contrario do If else onde é possivel fazer ramificações em sua estrutura o switch não tem essa
possibilidade, é um pouco mais simples e isso é bom.
Ao inves de precisar escrever mais codigo para precisar verificar o mesmo valor ele simplismente verifica
uma vez e testa em cada caso e por esse motivo utilizar a palavra reservada “break” para interromper um
processo é util.
switch (expressão){
case "x": instrução
break;
case "z": //não, isto não é um erro, quando um case é passado sem instrução e break e logo abaixo um outro case, a instrução passa a valer para os dois
case "same": instrução
break;
}
Como esta demonstrado acima, o uso de “break” é muito relevante, pois o comportamento padrão é que
independe de o “case” tiver seu valor verificado e o codigo executado, ele vai pular para o proximo
“case” e então repetir o processo ate que todos os “case” estejam verificados e ou executados. Portanto,
“break” nada mais é que uma palavra reservada que ao ser lida ela interrompe o processo e utilizando de
uma analogia, ela “salta” para fora do switch, já que o case foi executado.
switch (mes){
case "1":
console.log("Janeiro, este é o primeiro mes do ano :)");
break;
case "2":
console.log("Fevereiro, este é o segundo mes do ano :)");
break;
case "3":
console.log("Março, este é o terceiro mes do ano :)")
break;
default:
console.log("Este não é o primeiro, nem o segundo e tambem não é o terceiro mes do ano")
break;
}
Objetos
O que é objetos?
Um objeto é uma estrutura de dados organizados para manipular, armazenar e aninhar dados.
Identificador (variavel)
Pares de Chave-Valor
As chaves são Strings que servem como identificadores dos elementos.
Os valores são armazenados nas chaves, sendo identificados pela string nome.
Anotações Prog.Js 7
-Ferramenta util para agrupar dados.
const expObject = {
nome : "Matt",
sobrenome: "Dev",
idade: 18,
endereco: {
pais: "Br",
uf: "SP",
cidade: "SP"
}
}
//um objeto com algumas propriedades, onde uma propriedade tem tres outros elementos aninhados
os metodos em js servem para executar uma função, são palavras reservadas para
facilitar determinadas operações.
testObject = {
num: 123,
num2: 4
}
console.table(testobject);
//console imprime
testObject = {
num: 123,
num2: 4,
num3: {
numHere: 18,
numHere2: 100
}
}
o “.” é extremamente importante, pois ele é utilizado na maior parte das vezes
para acessar propriedades de diversas areas, uma ferramenta sintatica muito util
existe uma palavra reservada que ao ser utilizada ela deleta uma propriedade de um objeto.
para ser utilizada basta iniciar a linha com o metodo e em seguida escrever o caminho do objeto desejado
para deletar:
testObject = {
num: 123,
num2: 4,
num3: {
numHere: 18,
numHere2: 100
}
}
Anotações Prog.Js 8
delete testObject.num3.numHere2; //numHere2 foi deletado
Verificar a existencia
tambem existe a possibilidade de verificar a existencia de uma proriedade e ter o retorno em valores
booleanos (True or False):
//objeto criado
testObject = {
num: 123,
num2: 4,
num3: {
numHere: 18,
numHere2: 100
}
}
console.log(testObject.hasOwnProperty('num2'));
//mensagem imprimida no console sera True
console.log(testObject.num3.hasOwnProperty('numHere2'));//true
//para verificar propriedades dentro de propriedas, basta usar esta sintaxe
console.log(testObject.hasOwnProperty('abacaxi'));//false
//se o metodo existir mas tiver seu valor como null ou undefined ainda sim o retorno sera true
//o metodo hasOwnProperty() tambem é valido em arrays, ja que estas tambem são objetos
Type Casting
Tipos de conversão
No javascript é possivel converter o tipo de um valor, isto é util quando se deseja utilizar os dados de
uma maneira diferente.
Conversão implicita: É quando este processo ocorre sem que a alteração seja feita explicitamente no
codigo atraves de metodos
1 + "2" = "12";
Neste exemplo o console imprimira “12”, isto ocorre quando um numero e uma string são concatenados, o
numero sera convertido em string.
Conversão explicita: É quando os valores são alterados de forma explicita atraves de metodos
Anotações Prog.Js 9
parseInt e parseFloat
ParseInt() é um metodo utilizado para processar um numero nos parametros que nao seja do tipo Number e
então alterar ele para type number.
caso um numero que nao seja inteiro for passado para parseInt, ele se tornara
inteiro
parseFloat() é um metodo utilizado para o mesmo fim, mas para numeros com pontos
Estruturas de dados
Os Principais
Array
Arrays são uma estrutura de dados de extrema importancia para o desenvolvimento de diversas apliações.
•O conceito do uso de Arrays é utilizar dessa estrutura para o armazenamento de diversos tipos de
valores, sejam eles booleans, string ou numbers.
•Arrays possuem o seu tamanho mutavel, isto é voce nao precisa declarar seu tamanho apos ter criado uma
array, é possivel adicionar e deletar quantas vezes quiser valores de arrays.
No Javascript o indice se inicia na contagem zero e segue na ordem natural dos numeros
console.table(arr);
┌─────────┬─────────────┐
│(index) │ Values │
├─────────┼─────────────┤
│ 0 │ 'novoValor' │
│ 1 │ 'um' │
│ 2 │ 'five' │
│ 3 │ 'make' │
│ 4 │ 'no fim' │
├─────────┼─────────────┤
//resultado final
let tamanho = arr.length - 1;
//para verificar o tamanho de uma array(quantos elementos possui) basta utilizar
//o metodo .length
console.log(tamanho);//
//como o indicie se inicia no zero, isto faz com que o ultimo elemento seja um valor acima
Anotações Prog.Js 10
//da nossa contagem convencional da qual se inicia no 1, portanto para verificar
//o tamanho total de uma array basta utilizar o metodo subtraindo 1, assim nossa contagem
// e a do computador permanecem a mesma
Map
Em JavaScript, um Map é como uma lista de coisas onde cada coisa tem um nome (chave) e um valor. É
como um dicionário onde você pode olhar para uma palavra (chave) e ver o que significa (valor). É útil
quando você precisa associar informações de uma forma organizada e fácil de encontrar. Por exemplo,
você pode usar um Map para fazer uma lista de nomes de pessoas e suas idades. Isso torna mais fácil
encontrar a idade de alguém quando você sabe o nome dela.
Anotações Prog.Js 11