Javascript
-
Upload
marcio-silvestroni -
Category
Software
-
view
122 -
download
0
Transcript of Javascript
![Page 1: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/1.jpg)
Javascript
![Page 2: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/2.jpg)
Revolução na Web
![Page 3: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/3.jpg)
História
Desenvolvido por Brendan Eich da Netscape sob o nome de Mocha.
Desenvolvida em pouco tempo, aproveitando características de outras linguagens
Nome mudou por uma estratégia de marketing da Netscape para aproveitar a popularidade do recém-lançado Java. (Malditos)
Adquiriu ampla aceitação pelos navegadores como linguagem client-side
Microsoft usa JScript para evitar problemas de marca registrada
Hoje é mantida pela Mozilla Foundation
![Page 4: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/4.jpg)
Padronização
![Page 5: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/5.jpg)
Características
Tipificação fraca
Objetos
Funções
Escopo de variáveis
Closures
Herança prototípica
![Page 6: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/6.jpg)
Tipificação Fraca
![Page 7: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/7.jpg)
Objetos
Simplesmente uma coleção de chaves e valores
Tudo em Javascript são objetos: funções, arrays, expressões regulares etc
var cliente = new Object;
cliente.nome = "João";
cliente.sobrenome = "Silva";
console.log(cliente.nome + ' ' + cliente.sobrenome);
![Page 8: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/8.jpg)
Objetos Literais
var cliente = {
nome: 'João',
telefones: {
residencial: '45323324',
celular: '948298388'
}
};
console.log(cliente["nome"]);
console.log(cliente.telefones.celular);
![Page 9: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/9.jpg)
Funções
Funções são objetos de primeira classe
Podem ser armazenadas em varáveis:
var show = function (mensagem) {
console.log(mensagem);
};
show("Ola");
![Page 10: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/10.jpg)
Funções
Podem ser passadas por parâmetro:
function executarFuncao(funcao, texto) {
funcao(texto);
}
executarFuncao(alert, "Ola mundo");
![Page 11: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/11.jpg)
Funções
Podem ser retornadas por outras funções:
function alertar(mensagem) {
return function () { alert(mensagem); };
}
var showAlerta = alertar("ola mundo");
showAlerta();
![Page 12: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/12.jpg)
Escopo de Variáveis
Escopo global, escopo de função exterior e escopo local
Todos objeto criado é colocado em um escopo global (péssimo)
var nome = 'João';//Escopo global (mesmo)
function ComporNome() {
var sobrenome = 'Silva'; //Escopo local
console.log(nome + ' ' + sobrenome);
}
![Page 13: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/13.jpg)
Escopo de Variáveis
Minimizando problema de variáveis globais
var app = {};
app.hotpoint = {
pessoa: {
nome: 'Joao'
}
};
console.log(app.hotpoint.pessoa.nome);
![Page 14: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/14.jpg)
Closures
Blocos de código que tem a capacidade de guardar o contexto no qual eles foram criados, mesmo quando a função que criou esse bloco já saiu de escopo.
function geraSomador(numero) {
return function (x) { return x + numero; };
}
var soma5 = geraSomador(5);
console.log(soma5(5)); //10
![Page 15: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/15.jpg)
Herança Prototípica
Javascript não possui classes, todo objeto é ligado a um protótipo de outro objeto no qual pode herdar propriedades.
Todos objetos criado de literais são associados a Object.prototype
String.prototype.log = function () {
console.log(this.toString());
};
'ola mundo'.log();
![Page 16: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/16.jpg)
Partes Ruins
![Page 17: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/17.jpg)
==
'' == ‘0 false
0 == '' true
0 == ‘0' true
false == ‘false' false
false == ‘0' true
false == undefined false
false == null false
null == undefined true
‘ t\r\b ‘ == 0 true
Quando operadores de tipos diferentes, tenta fazer a coversãode tipo
Usar sempre operador ternário: === !==
![Page 18: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/18.jpg)
JSLint
Ferramenta de qualidade de código.
Ajuda a identificar problemas e retorna aonde estão os pontos problemáticos no código
Fundamental para garantir a qualidade do desenvolvimento
Pode-se desligar algumas opções de análise
http://www.jslint.com/
![Page 19: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/19.jpg)
Conclusões
Pode-se cumprir uma tarefa sem ter que conhecer muito a linguagem
Conhecer a natureza da linguagem é fundamental para o desenvolvimento de aplicações mais complexas
Tipificação fraca induz ao erro, porém com prática e disciplina por parte do programador torna-se libertadora
Existem alguns erros de projeto na linguagem que podem ser contornados
Ganhando mercado com novas tecnologias
![Page 20: Javascript](https://reader033.fdocumentos.com/reader033/viewer/2022051112/559460701a28abbe6a8b45fb/html5/thumbnails/20.jpg)
Referências
O Melhor do Javascript – Duglas Cockford
Functional Javascript – Michael Fogus
http://vimeo.com/30569658
http://loopinfinito.com.br/
http://javascriptbrasil.com/