O documento descreve a história e características principais da linguagem Javascript. Ela foi criada originalmente pela Netscape sob o nome Mocha e teve seu nome alterado para aproveitar a popularidade do Java. Hoje é mantida pela Mozilla Foundation e revolucionou o desenvolvimento web com sua capacidade de executar scripts do lado do cliente.
3. 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
9. 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");
10. Funções
Podem ser passadas por parâmetro:
function executarFuncao(funcao, texto) {
funcao(texto);
}
executarFuncao(alert, "Ola mundo");
11. Funções
Podem ser retornadas por outras funções:
function alertar(mensagem) {
return function () { alert(mensagem); };
}
var showAlerta = alertar("ola mundo");
showAlerta();
12. 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);
}
13. Escopo de Variáveis
Minimizando problema de variáveis globais
var app = {};
app.hotpoint = {
pessoa: {
nome: 'Joao'
}
};
console.log(app.hotpoint.pessoa.nome);
14. 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
15. 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();
17. ==
'' == ‘0 false
0 == '' true
0 == ‘0' true
false == ‘false' false
false == ‘0' true
false == undefined false
false == null false
null == undefined true
‘ trb ‘ == 0 true
Quando operadores de tipos
diferentes, tenta fazer a coversão
de tipo
Usar sempre operador ternário:
=== !==
18. 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/
19. 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
20. Referências
O Melhor do Javascript – Duglas Cockford
Functional Javascript – Michael Fogus
http://vimeo.com/30569658
http://loopinfinito.com.br/
http://javascriptbrasil.com/