Download - Javascript

Transcript
Page 1: Javascript

Javascript

Page 2: Javascript

Revolução na Web

Page 3: Javascript

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

Padronização

Page 5: Javascript

Características

Tipificação fraca

Objetos

Funções

Escopo de variáveis

Closures

Herança prototípica

Page 6: Javascript

Tipificação Fraca

Page 7: Javascript

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

Objetos Literais

var cliente = {

nome: 'João',

telefones: {

residencial: '45323324',

celular: '948298388'

}

};

console.log(cliente["nome"]);

console.log(cliente.telefones.celular);

Page 9: Javascript

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

Funções

Podem ser passadas por parâmetro:

function executarFuncao(funcao, texto) {

funcao(texto);

}

executarFuncao(alert, "Ola mundo");

Page 11: Javascript

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

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

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

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

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

Partes Ruins

Page 17: Javascript

==

'' == ‘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

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

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

Referências

O Melhor do Javascript – Duglas Cockford

Functional Javascript – Michael Fogus

http://vimeo.com/30569658

http://loopinfinito.com.br/

http://javascriptbrasil.com/