Notas sobre o JavaScript
O JavaScript pode ser usado para qualquer plataforma e para qualquer fim. Desde páginas web, aplicações web, gestão de base-de-dados, programar robots, aplicações para desktop, servidor, etc..
Javascript para a web
- Front-end: Manipula a interface gráfica dos componentes do site usando o V8 ou o SpiderMonkey
- Back-end: Manipula os dados de uma base-de-dados e apresenta-os no site usando o NodeJS
JavaScript para outros dispositivos
- Android e Apple: Uso do NodeJ com a framework React-Native
- PC: ( desktop ou servidor ) Usando somente o NodeJS
- Angular: Plataforma que usa TypeScript
- React: Plataforma que usa Javascript
- VueJS: Plataforma que usa JavaScript
- EmberJS: Plataforma que usa Javascript
Termos comuns no uso do Javascript
- VanillaJS: é o termo ao uso do JavaScript sem usar librarias externas.
- ES6 ou ES2015: é o termo que se usa para referir uma versão especifica do Javascript, que é implementada pela organização ECMAScript ( e que actualmente tem suporte em quase todos os browsers )
-
Na consola: é a interface de comando do Browser (firefox |
|
chromium): Ctrl+I para aceder |
- No HTML: VanillaJS - Os resultados podem ser só dados (na consola) ou manipulação dos elementos (na página)
<!-- a primeira opção é a seguinte -->
<script>CODIGO</script>
<!-- a segunda opção é a seguinte -->
<script src="ficheiro.js"></script>
Primeiros passos
- Normalmente usa-se a segunda opção para escrever o código de Javascript e a consola para ler os avisos e os erros do código.
Tipo de Dados
- Undefined: o valor não foi definido: ( resultado constante do fim de cada ciclo no JavaScript )
- Null: valor é nulo.
- Boolean: valor é verdadeiro ou falso
- Number: valor numérico
- String: conteudo entre “ “ ou ' ', isto é, “texto” (conjunto de caractéres com ou sem espaço entre eles)
- NaN: função do JavaScript que declara que um valor não é um número
- BigInt: valor primitivo que corresponde a um valor numérico de precisão
- Infinity: função do Javascript que declara que um valor é infinito
Operadores
- Os operadores são formas de comparar informação, que usa simbolos matemáticos para esse fim, ou funções que já são built-in-function’s.
Nome |
Exemplo |
Symbolo |
Resultado |
Tradução |
Tipo |
Unary Operator |
- x; |
- |
-10 |
x fica negativo |
Número |
Bitwise Operator |
~ x |
~ |
; -21 |
x menos x menos 1 |
Número |
Exponention Operator |
x ** y |
** |
1.04..+26 |
Expoente de x com y |
Número |
Multiply Operator |
x * y; |
* |
400 |
x multiplicado por y |
Número |
Divide Operator |
x / y; |
/ |
1 |
x a dividir por y |
Número |
Number Add |
x++; |
++ |
21 |
Adicionar 1 a x |
Número |
Number Subtract |
y–; |
– |
19 |
Subtrair 1 a y |
Número |
Bigger than |
x > 10; |
> |
true |
x maior do que y? |
Boolean |
Bigger or Equal |
x >= y; |
>= |
true |
x maior ou igual a y? |
Boolean |
Small than |
x < y; |
< |
false |
x menor do que y? |
Boolean |
Small or Equal |
x <= y; |
<= |
true |
x menor ou igual a y? |
Boolean |
Equal to |
x === y; |
=== |
true |
x igual a y? |
Boolean |
Not-Equal to |
x !== y; |
!== |
false |
x não é igual a y? |
Boolean |
AND operator |
x & y; |
& |
20 |
x e y |
Boolean |
OR operator |
x | y; |
| |
20 |
x ou y |
Boolean |
Nomes reservados
- Os nomes reservados são todos aqueles que fazem parte da funcionalidade que o próprio JavaScript oferece. O uso destes nomes de forma errónea, produz erros, que por sua vez, poderão parar a aplicação (erro fatal). Estes nomes não podem ser usados como identificadores de valores. E.g:
var var = var2; // ERRO ( o nome 'var' não pode ser usado para declarar uma variavel)
Reserved Word |
Descrição |
await |
… |
break |
quando usado com o case, quebra o ciclo da função. |
case |
built-in-function para criar um estilo de “loop” |
class |
serve para criar classes que definem objectos |
const |
forma de declarar uma variavel e impedir que o valor da mesma, mude |
continue |
… |
debugger |
.. |
default |
.. |
delete |
.. |
do |
ciclo do-while |
else |
acrescentar condição |
enum |
.. |
export |
exporta variavel para ser acessível noutro modulo |
extends |
amplia uma classe ou um objecto |
false |
valor que declara a pergunta como falsa |
finally |
|
for |
ciclo for |
function |
built-in-function que define e chama uma função() |
if |
condição se |
import |
acrescenta variaveis exportadas |
in |
|
instanceof |
|
let |
forma de declarar uma variavel e impedir que o tipo de dado associado, mude |
new |
cria um novo objecto a partir da definição de outro objecto ou classe |
null |
valor é vazio |
return |
retoma um resultado e pára o ciclo |
super |
|
switch |
usado no ciclo case para definir opções ou condições |
this |
refere o conteúdo que está no scope (enquadramento) do contexto |
throw |
atira - envio de mensagem para a consola ou aplicação |
true |
valor que declara a pergunta como verdadeira |
try |
|
typeof |
diz qual o tipo de dado que um valor contém |
var |
forma de declarar uma variavel |
void |
|
while |
ciclo while |
with |
|
yield |
|
Funções
- function(): propriedade de um objecto que poderá ser envocado como uma sub-rotina.
let foo = function() {
if(!true){
console.log("False")
} else {
console.log("True")
}
}
foo();
- built-in-function: é um built-in-Object que é uma função.
let li = ['a', 'b', 'c', 'd']
li.push('e')
console.log(li);
- method: função que é o valor da propriedade. Quando uma função é chamada como método de um objecto, o objecto é partilhado para a função como o (seu) (this) valor.
- built-in-method: é uma built-in-function.
Definição da estrutura de Objectos em JavaScript
- Uma coleção de propriedades que tem um único prototype-object associado. Cada propriedade (chave) key, tem um valor associado.
let todoList = {
a: "Arrumar e limpar",
b: "Organizar e Estruturar",
c: "Definir e Planificar",
d: "Trabalhar e Comprar"
}
console.log(todoList)
- ordinary-object: é um objecto que usa os métodos internos essenciais que têm suporte em todos os objectos.
- exotic-object: é um objecto que não tem um comportamento estandarizado para um ou mais métodos internos essenciais.
- standart-object: é um objecto que usa a semantica definida pela especificação do ECMAScript.
- built-in-object: é um objecto que também é um constructor
- Para construir um objecto, pode-se usar a built-in-function new Object().
const ob = new Object();
ob.name = "Oscar";
ob.email = "funky@monkey.mail"
ob.do = function() {
console.log(`${ob.name}: do something with your ${ob.email}` )
console.log(ob)
};
ob.do();
- Note-se que caso o objecto seja a cópia de outro objecto anterior criado, a comparação entre os dois objectos é sempre verdadeira ( ambos são iguais ) e quando o primeiro muda, o segundo também.
const ab = new Object();
ab.planet = "MonkeyPlanet"
ab.galaxy = "MonkeyUniverse"
abFire = function() {
console.log("I am the Fire!")
console.log(`We are in ${ab.planet} of ${ab.galaxy}`)
}
ab.abFire();
eb = ab;
console.log(`Is eb === ab? ${ab === eb}`) // true
- Propriety: parte do objecto que associa uma chave a um valor: ab.planet
- Attribute: valor interno que define uma característica de uma propriedade: MonkeyPlanet
- Construtor: Cria e inicia objectos. A propriedade de um prototype-constructor é um prototype-object que é usado para receber propriedades de outros objectos e partilha-los.
- Prototype: Objecto que partilha propriedades de outros objectos. O DOM é um grande objecto repleto de objectos prototype. Todos os objectos têm um objecto prototype associado.
Definição da estrutura de Arrays em JavaScript
- Um Array é uma lista de elementos sem chave associada representada por []
let list = ['sapatos', 'piugas', 'cuecas', 'champô', 'sabonete', 'perfume']
- O mesmo acontece entre arrays que são a cópia ou o clone de outro anteriormente criado.
let l = ['a', 'b', 'c'];
L = l;
console.log(`L is equal to l? ${L === l}`); // true
Classes
- Uma classe descreve o que um objecto poderá conter, mas não é o objecto. Uma classe descreve o nome da classe, os atributos da mesma e os seus comportamentos ( funções ).
class Pessoa {
nome = this.nome;
email = this.email;
}
let p = new Pessoa();
p.nome = "Mofoo"
p.email = "Jufoo"
console.log(p)
Existem 4 princípios usados em programação de objectos:
- Abstraction: Abstração de todos os detalhes que são desnecessários -> Cadeira -> Todos os detalhes não essenciais são ignorados.
- Encapsulation: A ideia de, fechar, cobrir, guardar, privar, privatizar, não partilhar, restringir.
- Polymorphism: Muitas formas -> Em JS pode-se somar números ou concatenar caractéres. Um único símbolo, várias funções que dependem do tipo de dados. Podem ser atributos, funções ou o prototype da função.
- Inheritance: É a ideia de copia total dos atributos de uma classe, para criar uma nova classe.