"JavaScript é uma das linguagens de programação mais populares atualmente. É conhecida como a linguagem da internet porque os navegadores a entendem de modo nativo sem a instalação de qualquer plugin."
Loiane Groner Estruturas de dados e algoritmos com JavaScript, 2018
Variáveis são usadas para armazenar dados, que podem ser atualizados ou recuperados sempre que necessário.
Variáveis servem para guardarmos dados de vários tipos. Javascript é uma liguagem fracamente tipada, ou seja, não é necessário definir o tipo quando declaramos uma variável.
O que define o tipo de uma variável é o valor atribuído a ela.
Uma variável declarada com as palavras reservadas let
ou var
, pode receber qualquer outro valor de qualquer tipo a qualquer momento, sempre respeitando o escopo.
- Podem começar com
letra
,$
ou_
- Não podem começar com números
- É possível usar
letras
ounúmeros
- É possível usar
acentos
esímbolos
- Não podem conter
espaços
- Não podem ser
palavras reservadas
Dicas:
Maiúsculas
eminúsculas
fazem a diferença- Tente escolher
nomes coerentes
para as variáveis - Após 2015 [ES6] surguram novas formas de declarar variáveis
let
econst
💻 | VAR | LET | CONST |
---|---|---|---|
Escopo Global |
✔️ | ❌ | ❌ |
Escopo de Função |
✔️ | ✔️ | ✔️ |
Escopo Bloqueado |
❌ | ✔️ | ✔️ |
Pode ser ressignificado? |
✔️ | ✔️ | ❌ |
Pode ser redeclarado? |
✔️ | ❌ | ❌ |
Pode ser hospedado? |
✔️ | ❌ | ❌ |
Variáveis declaradas com a palavra reservada var
ficam disponíveis no escopo Global e podem ser acesadas mesmo que fora de um bloco de código.
{
var age = 32
}
console.log(age) //-> 32
Variáveis declaradas com a palavra reservada let
(ou const
) ficam disponíveis apenas no escopo Local, portanto não podem ser acesadas de fora de um bloco de código.
{
let age = 32
}
console.log(age) //-> Uncaught ReferenceError: age is not defined
Variáveis declaradas com a palavra reservada const
não podem ser declaradas sem ser inicializadas, ou seja, é obrigatório declarar um valor no momento da declaração.
const myLastName //-> Uncaught SyntaxError: Missing initializer in const declaration
const name = "João"
console.log(name) //-> João
No JavaScript as variáveis declaradas com o var
sofrem o que se chama de Hoisting. É como se o JavaScript declarasse aquela variável fora do bloco de código sem inicializá-la, e dentro do bloco ele atribui um valor. Exemplo:
var age;
{
age = 32
}
console.log(age) //-> 32
O JavaScript é uma linguagem dinamicamente tipada. O tipo de dado pode ser alterado conforme a necessidade do algoritmo.
O tipo string é uma cadeira de caracteres, texto, que é pode ser qualquer sequencia de caracteres desde que entre aspas duplas "texto qualquer"
, aspas simples 'texto qualquer'
ou crases `Template string pode usar ${interpolation}`
var firstName = 'Kelvis' //string
let lastName = "Duran" //string
const regards = `Boas vindas` //string [Template String]
Qualquer valor númerico, seja ele inteiro(int) ou decimal(float).
let age = 35 //number
let height = 1.80 //number
Valor lógico representado apenas por duas palavras reservadas.
true
para verdadeiro e false
para falso.
let isStudent = false //boolean
let isDev = true //boolean
Um objeto vazio, que não possui dados.
let price = null // Objeto Vazio
Valor ainda não definido.
let price;
console.log(price) // undefined
Objetos são uma forma de mapeamento chave x valor.
É representado por chaves {}
, e dentro delas definimos o identificador(chave) como uma "string"
seguida de dois pontos :
e logo após o valor, que pode ser de qualquer tipo. Havendo mais de uma chave x valor, deve se adicionar uma vírgula ,
ao final de cada um, com a exceção do último.
let person = {
"name": "Gildo Neto",
"age": 35,
"isDev": true
}
Um conjunto de informações para representar listas e/ou conjuntos.
let artists = ["Alceu Valença", "Chico Science", "Zé Ramalho", "Otto"]
Um objeto que tem a capacidade de ser chamado (ser executado).
Após declarado, pode ser chamado a qualquer momento usando o nome da função seguido de parêntes e opcionalmente com parâmetros dentro dos parênteses. nomeDaFuncao(parametros)
function sum(num1, num2){
return num1 + num2
}
console.log(sum(3,7)) //-> 10
Operador que retorna o tipo do dado.
console.log(typeof firstName) //-> string
console.log(typeof height) //-> number
console.log(typeof isDev) //-> boolean
console.log(typeof price) //-> undefined
console.log(typeof person) //-> object
console.log(typeof artists) //-> object [Array é objeto]
console.log(typeof sum) //-> function
- ARITMÉTICOS
- de ATRIBUIÇÃO
- RELACIONAIS (de comparação)
- LÓGICOS
- TERNÁRIO
5 + 2 //-> 7 [SOMA]
5 - 2 //-> 3 [SUBTRAÇÃO]
5 * 2 //-> 10 [MULTIPLICAÇÃO]
5 / 2 //-> 2.5 [DIVISÃO]
5 % 2 //-> 1 [RESTO]
5 ** 2 //-> 25 [POTÊNCIA]
- Parênteses ->
()
- Potência ->
**
- Multiplicação, divisão e resto ->
*
/
%
- Soma e subtração ->
+
-
var a = 5 + 3 //-> 8
var b = a % 5 //-> 3
var c = 5 * b ** 2 //-> 45
var d = 10 - a / 2 //-> 6
var e = 6 * 2 / d //-> 2
var f = b % e + 4 / e //-> 3
var n = 3
n = n + 4 //-> 7
n = n - 5 //-> 2
n = n * 4 //-> 8
n = n / 2 //-> 4
n = n ** 2 //-> 16
n = n % 5 //-> 1
var y = 3
y += 4 //-> y = y + 4
y -= 5 //-> y = y - 5
y *= 4 //-> y = y * 4
y /= 2 //-> y = y / 2
y **= 2 //-> y = y ** 2
y %= 5 //-> y = y % 5
var z = 5
z++ //-> z += 1 || z = z + 1
z-- //-> z -= 1 || z = z - 1
>
-> Maior que<
-> Menor que>=
-> Maior ou igual<=
-> Menor ou igual==
-> Igual!=
-> Diferente===
-> Igual e do mesmo tipo?!==
-> Diferente e tipos diferentes?
5 > 2 //-> true
7 < 4 //-> false
8 >= 8 //-> true
9 <= 7 //-> false
5 == 5 //-> true
4 != 4 //-> false
!
-> Negação&&
-> E (conjunção)||
-> OU (disjunção)
// NEGAÇÃO -> Operador Unário
!true //-> false
!false //-> true
// CONJUNÇÃO -> Operador Binário
true && true //-> true
true && false //-> false
false && true //-> false
false && false //-> false
// DISJUNÇÃO -> Operador Binário
true || true //-> true
true || false //-> true
false || true //-> true
false || false //-> false
- Operadores Aritméticos
()
**
/
... - Operadores Relacionais
>
<
>=
... - Operadores Lógicos
3.1!
3.2&&
3.3||
// EXEMPLOS
idade >= 15 && idade <= 17 // a idade está entre 15 e 17?
estado == 'RJ' || estado == 'SP' // o estado é RJ ou SP?
salario > 1500 && sexo != 'M' // o salário é acima de 1500 e não é homem?
Composto pelos caracteres ?
e :
Primeiro vem o teste lógico.
Se o teste for true
o valor após a interrogação ?
será retornado.
Se o teste for false
o valor após os 'dois pontos' :
será retornado.
let media = 8
media >= 7.0 ? "Aprovado" : "Reprovado" //-> Aprovado
media = 5.7
media >= 7.0 ? "Aprovado" : "Reprovado" //-> Reprovado
Estruturas que são executadas apenas se atenderem as condições definidas no código.
let num = 1;
if (num === 1){
console.log("num é igual a 1")
}
let num = 1;
if (num === 1){
console.log("num é igual a 1")
} else {
console.log("num não é igual a 1")
}
let num = 1;
if (num === 1){
console.log("num é igual a 1")
} else if (num === 2) {
console.log("num é igual a 2")
} else {
console.log("num não é igual a 1 nem a 2")
}
let month = "janeiro"
switch (month) {
case "fevereiro":
console.log("Mês 2")
break
case "março":
console.log("Mês 3")
break
case "janeiro":
console.log("Mês 1")
break
default:
console.log("nenhum caso foi atendido")
}
var colors = ["black", "white", "yellow", "green", "blue"]
for (let i = 0; i < colors.length; i++){
console.log(colors[i])
}
for (let i = 0; i < 10; i++){
console.log(i)
}
let i = 0;
while (i < 10){
console.log(i);
i++;
}
let i = 0;
do {
console.log(i);
i++;
} while (i < 10)
Função sem parâmetro
function sayHello() {
console.log('Hello')
}
sayHello()
Função com parâmetro(argumento)
function sayHello(name, lastName) {
console.log('Hello ' + name + ' ' + lastName)
}
sayHello('Chico', 'Science')
Função com return
function sum(a,b) {
return a + b
}
console.log(sum(40,60))
Desde de 2015 que é possível trabalhar com orientação a objetos no JavaScript.
class Book {
constructor(title, author, pages){
this.title = title;
this.author = author;
this.pages = pages;
}
read(){
return `Estou lendo ${this.title}`
}
}
let book = new Book('Algoritmos', 'Brian', 500);
let otherBook = new Book('Exu em Nova York', 'Cidinha da Silva', 100);
console.log(book.read())
class ITBook extends Book {
constructor(title, author, pages, technology){
super(title, author, pages)
this.technology = technology;
}
}
let itBook = new ITBook('Algoritmos for living', 'Brian', 500, 'Algoritmos');
console.log(itBook)
class Person {
constructor(name){
this._name = name;
}
get name(){
return this._name
}
set name(value){
this._name = value
}
}
let person = new Person('Gildo')
person.name = 'Neto'
console.log(person.name)