SlideShare ist ein Scribd-Unternehmen logo
1 von 74
Downloaden Sie, um offline zu lesen
JavaScript
Introdução

Esta imersão é baseada no ótimo
livro “JavaScript: The Good Parts”
de Douglas Crockford
História e por quê ...
• É a linguagem do browser
• A linguagem mais popular do mundo
• Feita em 1995 para o Netscape 2.0 sob
  o nome de Mocha depois LiveScript e
  por fim JavaScript (ECMA Script)
• A Microsoft adotou JavaScript no IE 3.0
  em 1996

                                            Brendan Eich
O porquê da má fama

• Sempre foi “a outra”
• Nome terrível !
• Control + C e Control + V
• APIs diferentes entre browsers
• Algumas características bem ruins (bad parts)
The bad parts
• Variáveis globais
• Escopo
• Inserção de ponto-e-vírgula
• Palavras reservadas
• parseInt
• +
• Valores falsos
• ==
... vamos nos focar nas partes boas !
The good parts

• Funções como valores
• Objetos dinâmicos
• Tipos fracos
• JSON
... e mais importante
não dá para fugir
Ambiente de testes

• Você vai precisar:
 • Editor de texto
 • Browser
 • Conexão com a Internet
Ambiente de testes
• Editor de texto (sugestões):
 • Sublime Text 2
 • TextMate
 • gedit
 • Notepad++
Ambiente de testes
programa.html
   <html>
     <body>
       <pre>
         <script src="programa.js"></script>
       </pre>
     </body>
   </html>


 programa.js
       document.writeln('123 Testando');
Resultado
Um pouco de sintaxe



 É importante para a sabermos como
     escrever nossos programas !
Nomes
• Um nome é uma letra seguido, opcionalmente,
  por outras letras, números e underlines
• Ex:
 • a
 • x1_
 • nomeCompleto
 • data_de_nascimento
Palavras Reservadas
abstract   enum         interface      throw
boolean    export       long           throws
break      extends      native         transient
byte       false        new            true
case       final         null           try
catch      finally       package        typeof
char       float         private        var
class      for          protected      volatile
const      function     public         void
continue   goto         return         while
debugger   if           short          with
default    implements   static
delete     import       super
do         in           switch
double     instanceof   synchronized
else       int          this
Números

• Exemplos:
 • Inteiros: 0 12 -39 42
 • Frações: 3.14
 • Exponenciais: 3.14e+30
Operadores Aritméticos
+ soma               --
- subtração          +=
/ divisão            -=
* multiplicação      *=
% resto da divisão   /=
++                   %=
Funções
• toFixed(casasDecimais)
 • Arredonda para o número de casas
   decimais
• isNaN(número)
 • Diz se o número é NaN (not a number
   - valor indeterminado)
Strings

• Aspas:
 • “Fulano de Tal”
• Apóstrofos :
 • ‘123 Testando’
Strings
• Propriedades:
 • length - Quantidade de caracteres
• Métodos:
 • indexOf(str)
 • replace(a, b)
 • split(delimitador)
 • substring(inicio, fim)
 • toLowerCase( )
 • toUpperCase( )
Strings


• Conversões:
 • parseInt(str) - String para inteiro
 • parseFloat(str) - String para float
Booleanos
                      true e false
‣ Valores falsos:
  ‣ false

  ‣ null
  ‣ undefined

  ‣ String vazio ‘’

  ‣ 0

  ‣ NaN
Arrays (literais)

• Vazio:
 • []
 • new Array( )
• Com elementos:
 • [‘banana’, ‘laranja’, ‘pitomba’]
Arrays
 • Exemplo:
    var carros = new Array( );
    carros[0] = “Volvo”;
    carros[1] = “BMW”;
    carros[2] = “Mercedes”;
• Tamanho do array:
 document.writeln(carros.length);

• Acessando valores:
 document.writeln(carros[1]);
Statements
COMENTÁRIOS

• De linha
 • // Comentário
• De bloco
 • /* Comentário de 1 ou n linhas */
VARIÁVEIS

• var nome = expressão;
• Exemplo:
 • var idade = 20;
 • var pais = ‘Brasil’;
IF


   • Exemplo:
var saldo = 10.0;
// Verificando se o saldo é suficiente
if (saldo < 0) {
  document.writeln (“Saldo insuficiente”);
} else {
  document.writeln (“Operação realizada”);
}
Operadores Relacionais
 • >    Maior
 • >=   Maior ou igual
 • <    Menor
 • <=   Menor ou igual
 • ==   Igual
 • !=   Diferente
 • === Igual
 • !== Diferente
cuidado com == e !=
==
'' == '0'            //   false
0 == ''              //   true
0 == '0'             //   true
false == 'false'     //   false
false == '0'         //   true
false == undefined   //   false
false == null        //   false
null == undefined    //   true
' trn ' == 0      //   true
SEMPRE use === e !==
===
'' == '0'            //   false
0 == ''              //   false
0 == '0'             //   false
false == 'false'     //   false
false == '0'         //   false
false == undefined   //   false
false == null        //   false
null == undefined    //   false
' trn ' == 0      //   false
Operadores Lógicos


• && e lógico (AND)
• || ou lógico (OR)
CURTO CIRCUITO
Curto Circuito
• Os operadores lógicos têm curto circuito
• Assim que for possível inferir o valor da expressão,
  sua avaliação é interrompida
• &&:
  • Assim que um valor false for encontrado toda a
    expressão será false
• ||:
  • Assim que um valor true for encontrado toda a
    expressão será true
WHILE


   • Exemplo:
var contador = 10;
// Contagem regressiva
while (contador >= 0) {
  document.writeln(contador);
  contador--;
}
FOR
FOR
    • Exemplo:
      for (var i = 0; i < 100; i++) {
        document.writeln(i);
      }


    • Exemplo:
var nomes = ['fulano', 'cicrano', 'beltrano'];

for (var indice in nomes) {
  document.writeln(nomes[indice]);
}
FUNÇÕES
FUNÇÕES
 • Exemplo:
       function soma(a, b) {
         return a + b;
       }
              Uma variável com uma função !
• Exemplo:
   var maior = function(a, b) {
     if (a > b) {
       return a;
     } else {
       return b;
     }
   }
OBJETOS

• Em JavaScript objetos guardam um
  conjunto de duplas chave-valor
• Por exemplo, um objeto vôo pode ter a
  seguinte chave: horário, com o valor:
  “18:30”
OBJETOS
    • Objeto vazio:
              var objeto = {}

    • Objeto com propriedades:
var candidato = {
  nome: "Manoel da Silva",
  idade: 28,
  terceiroGrau: true,
  cargoPretendido: "Analista de Sistemas"
}
OBJETOS
• Podem ser complexos:
    var voo = {
      companhia: "Oceanic",
      numero: 815,
      partida: {
         aeroporto: "SYD",
         horario: "22/09/2004 14:55",
         cidade: "Sydney"
      },
      chegada: {
         aeroporto: "LAX",
         horario: "23/09/2004 10:42",
         cidade: "Los Angeles"
      }
    }
Acessando valores


• candidato[“nome”]
• candidato.nome
• voo.partida.horario
Atribuindo valores


• candidato.idade = 29
• candidato[‘aprovado’] = false
• voo.situacao = ‘Desaparecido’
CONSTRUTORES

• Um construtor é uma função normal
  que cria um novo objeto utilizando a
  variável implícita this
• Um construtor deve ser sempre
  chamado utilizando o comando new
CONSTRUTORES
function Conta(titular) {
  this.titular = titular;
  this.saldo   = 0;

    this.depositar = function(valor) {
       this.saldo += valor;
    };
    this.sacar = function(valor) {
       this.saldo -= valor;
    };
    this.transferir = function(outraConta, valor) {
       this.sacar(valor);
       outraConta.depositar(valor);
    }
}
CONSTRUTORES

var c1 = new Conta("Pedro");
var c2 = new Conta("Maria");

c1.depositar(100);
c2.depositar(50);
c1.transferir(c2, 60);

document.writeln(c1.titular + " - R$ " + c1.saldo);
document.writeln(c2.titular + " - R$ " + c2.saldo);
PROTOTYPE
• Todos os objetos estão ligados a um
  prototype
• Os objetos heram suas propriedades deste
  prototype
• Alterando-se o prototype, altera-se todos os
  objetos ligados a ele
• Todos os prototypes herdam de
  Object.prototype
PROTOTYPE

Conta.prototype.toString = function() {
   return this.titular + " - R$ " + this.saldo;
};

document.writeln(c1.toString());
document.writeln(c2.toString());
PROTOTYPE

Number.prototype.dinheiro = function() {
  var valor = "" + this.toFixed(2);
  valor = valor.replace(".", ",");
  return "R$ " + valor;
}

var salario = 649.67;
document.writeln(salario.dinheiro());
REFLEXÃO
  • typeof
   • Retorna um String com o tipo de um
     valor
  • Exemplo:
document.writeln(typeof    Conta);
document.writeln(typeof    c1);
document.writeln(typeof    c1.titular);
document.writeln(typeof    c1.saldo);
document.writeln(typeof    c1.sacar);
REFLEXÃO
    • É possível utilizar um for para
      percorrer as propriedades de um objeto:

document.writeln("Analisando o objeto c1 ...");
for (propriedade in c1) {
  if (typeof c1[propriedade] === 'function') {
    document.writeln(" Metodo: " + propriedade);
  } else {
    document.writeln(" Atributo: " + propriedade);
  }
}
REFLEXÃO


• E se eu quiser criar um método em
  todos os objetos chamado inspect, que
  irá mostrar os atributos e métodos dos
  objetos ?
REFLEXÃO
// Criação do método inspect
Object.prototype.inspect = function() {
   var str = "";
   for (propriedade in this) {
     var tipo = typeof this[propriedade];
     if (tipo === 'function') {
       str += "Metodo: " + propriedade + "n";
     } else {
       str += "Atributo: " + propriedade + " (" + tipo + ")" + "n";
     }
   }
   return str;
};

// Testando o método inspect
document.writeln("c1:n" + c1.inspect());
document.writeln("c2:n" + c2.inspect());
EXCEÇÕES


• O tratamento de exceções permite a
  notificação (lançamento) e o tratamento
  de situações de falha
EXCEÇÕES
 • Lançamento de exceções:
  • throw valor
 • Exemplo:
...
  this.sacar = function(valor) {
     if (valor > this.saldo) {
       throw "Saldo Insuficiente";
     }
     this.saldo -= valor;
  };
...
EXCEÇÕES
  • Tratamento:


var c1 = new Conta("Pedro");

try {
  c1.sacar(500);
} catch (erro) {
  document.writeln("Erro: " + erro);
}
Uma Boa Prática
Utilize Namespaces
• Evite utilizar variáveis globais;
• Crie todas as suas variáveis, funções,
  objetos dentro de namespaces
  (containers);
• Exemplo:
var MINHA_APLICACAO = {};

MINHA_APLICACAO.versao = 2.0;
MINHA_APLICACAO.Pessoa = function(nome, idade) {
   this.nome = nome;
   this.idade = idade;
};
MINHA_APLICACAO.pessoas = new Array();
Aplicações
JQuery
jquery.com


   • Biblioteca JavaScript mais utilizada
   • Uma camada acima da API do browser
   • Simplifica o acesso aos objetos das
     páginas
Instalação

 • Faça o download do jQuery e copie
   para seu projeto
• OU
 • Utilize direto de uma CDN
  • Ex: Google CDN
Utilizando a Google CDN
                           programa.html
<html>
  <body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js">
    </script>
    <script src="programa.js"></script>
  </body>
</html>




            programa.js
                      $(function() {
                        alert("oi");
                      });
JQuery

• Ponto de entrada
• Todo script JQuery começa com um
  ponto de entrada que será executado
  apenas quando a página estiver pronta
      $(function() {
        // Ponto de entrada
      });
JQuery
• Os elementos de uma página são
  acessados em JQuery através de
  seletores
• Seletores:
 • id: $(‘#id’)
 • classe: $(‘.classe’)
 • tag: $(‘tag’)
Atributos dos Elementos
 • Um elemento pode ser modificado e
   consultado através dos seguintes métodos:
  • attr
  • removeAttr
  • val
  • text
  • html
Eventos
• blur
• change
• click
• dblclick
• focus
• keydown
• keypress
Calculadora
                           programa.html
<html>
  <body>
    A <input type="text" id="a">
    B <input type="text" id="b">
    <button id="mais">+</button>
    <input type="text" id="resultado">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js">
    </script>
    <script src="programa.js">
    </script>
  </body>
</html>
Calculadora
              programa.js
$(function() {
  $('#mais').click(function() {
    var a = parseFloat($('#a').val());
    var b = parseFloat($('#b').val());
    var c = a + b;
    $('#resultado').val(c.toFixed(2));
  });
});
Calculadora
                  programa.js
var CALCULADORA = {};

CALCULADORA.somar = function(a, b) {
   var c = a + b;
   return c.toFixed(2);
};

$(function() {
  $('#mais').click(function() {
    var a = parseFloat($('#a').val());
    var b = parseFloat($('#b').val());
    $('#resultado').val(CALCULADORA.somar(a, b));
  });
});
O que não vimos

• Regex
• Outras bibliotecas
 • ExtJS
 • YUI
• NodeJS

Weitere ähnliche Inhalte

Was ist angesagt?

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScriptThiago Poiani
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasRodrigo Branas
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoJessyka Lage
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxTiago Antônio da Silva
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSSledsifes
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 

Was ist angesagt? (20)

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
DOMinando JavaScript
DOMinando JavaScriptDOMinando JavaScript
DOMinando JavaScript
 
Node.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo BranasNode.js - #1 - Introdução - Rodrigo Branas
Node.js - #1 - Introdução - Rodrigo Branas
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: Introdução
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Curso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e AjaxCurso JavaScript - Aula sobre DOM e Ajax
Curso JavaScript - Aula sobre DOM e Ajax
 
Apresentação HTML e CSS
Apresentação HTML e CSSApresentação HTML e CSS
Apresentação HTML e CSS
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Curso de Desenvolvimento Web - Módulo 01 - HTML
Curso de Desenvolvimento Web - Módulo 01 - HTMLCurso de Desenvolvimento Web - Módulo 01 - HTML
Curso de Desenvolvimento Web - Módulo 01 - HTML
 
Front End x Back End
Front End x Back EndFront End x Back End
Front End x Back End
 

Andere mochten auch

Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04Ramon Kayo
 
javscript para iniciantes
javscript para iniciantesjavscript para iniciantes
javscript para iniciantesbradock1964
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticosCentro Paula Souza
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An IntroductionManvendra Singh
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 
08 Trabalhando com mais de uma tabela (Relacionamento)
08 Trabalhando com mais de uma tabela (Relacionamento)08 Trabalhando com mais de uma tabela (Relacionamento)
08 Trabalhando com mais de uma tabela (Relacionamento)Centro Paula Souza
 
Lógica de Programação com Javascript - Aula #05
Lógica de Programação com Javascript - Aula #05Lógica de Programação com Javascript - Aula #05
Lógica de Programação com Javascript - Aula #05Ramon Kayo
 
Lógica de Programação com Javascript - Aula #02
Lógica de Programação com Javascript - Aula #02Lógica de Programação com Javascript - Aula #02
Lógica de Programação com Javascript - Aula #02Ramon Kayo
 
Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Ramon Kayo
 
Lógica de Programação com Javascript - Aula #01
Lógica de Programação com Javascript - Aula #01Lógica de Programação com Javascript - Aula #01
Lógica de Programação com Javascript - Aula #01Ramon Kayo
 

Andere mochten auch (20)

Javascript
JavascriptJavascript
Javascript
 
Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04
 
javscript para iniciantes
javscript para iniciantesjavscript para iniciantes
javscript para iniciantes
 
10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos10 Java Script - Exemplos práticos
10 Java Script - Exemplos práticos
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Python 08
Python 08Python 08
Python 08
 
Python 05
Python 05Python 05
Python 05
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Python 07
Python 07Python 07
Python 07
 
08 Trabalhando com mais de uma tabela (Relacionamento)
08 Trabalhando com mais de uma tabela (Relacionamento)08 Trabalhando com mais de uma tabela (Relacionamento)
08 Trabalhando com mais de uma tabela (Relacionamento)
 
Python 02
Python 02Python 02
Python 02
 
Python 03
Python 03Python 03
Python 03
 
Lógica de Programação com Javascript - Aula #05
Lógica de Programação com Javascript - Aula #05Lógica de Programação com Javascript - Aula #05
Lógica de Programação com Javascript - Aula #05
 
Na prática: STF e CobiT
Na prática: STF e CobiTNa prática: STF e CobiT
Na prática: STF e CobiT
 
Lógica de Programação com Javascript - Aula #02
Lógica de Programação com Javascript - Aula #02Lógica de Programação com Javascript - Aula #02
Lógica de Programação com Javascript - Aula #02
 
Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03Lógica de Programação com Javascript - Aula #03
Lógica de Programação com Javascript - Aula #03
 
Lógica de Programação com Javascript - Aula #01
Lógica de Programação com Javascript - Aula #01Lógica de Programação com Javascript - Aula #01
Lógica de Programação com Javascript - Aula #01
 

Ähnlich wie Introdução a JavaScript

Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptxLuanDev1
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - ComparandoWesley Lemos
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosWesley Lemos
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - FunctionsWesley Lemos
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05Carlos Santos
 

Ähnlich wie Introdução a JavaScript (20)

Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
Javascript para CSharpers 2 - Functions
Javascript para CSharpers   2 - FunctionsJavascript para CSharpers   2 - Functions
Javascript para CSharpers 2 - Functions
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Visualg
VisualgVisualg
Visualg
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Javascript
JavascriptJavascript
Javascript
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05
 
Apostila c++
Apostila c++Apostila c++
Apostila c++
 
JAVA - Introdução
JAVA - IntroduçãoJAVA - Introdução
JAVA - Introdução
 

Mehr von Bruno Catão

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Bruno Catão
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Bruno Catão
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2Bruno Catão
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1Bruno Catão
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + FirebaseBruno Catão
 
Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose PigmentarBruno Catão
 
Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Bruno Catão
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework GrailsBruno Catão
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 

Mehr von Bruno Catão (17)

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose Pigmentar
 
Angular js
Angular jsAngular js
Angular js
 
Python 06
Python 06Python 06
Python 06
 
Python 04
Python 04Python 04
Python 04
 
Python 01
Python 01Python 01
Python 01
 
Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
O framework spring
O framework springO framework spring
O framework spring
 

Introdução a JavaScript

  • 2. Introdução Esta imersão é baseada no ótimo livro “JavaScript: The Good Parts” de Douglas Crockford
  • 3. História e por quê ... • É a linguagem do browser • A linguagem mais popular do mundo • Feita em 1995 para o Netscape 2.0 sob o nome de Mocha depois LiveScript e por fim JavaScript (ECMA Script) • A Microsoft adotou JavaScript no IE 3.0 em 1996 Brendan Eich
  • 4. O porquê da má fama • Sempre foi “a outra” • Nome terrível ! • Control + C e Control + V • APIs diferentes entre browsers • Algumas características bem ruins (bad parts)
  • 5. The bad parts • Variáveis globais • Escopo • Inserção de ponto-e-vírgula • Palavras reservadas • parseInt • + • Valores falsos • ==
  • 6. ... vamos nos focar nas partes boas !
  • 7. The good parts • Funções como valores • Objetos dinâmicos • Tipos fracos • JSON
  • 8. ... e mais importante
  • 10. Ambiente de testes • Você vai precisar: • Editor de texto • Browser • Conexão com a Internet
  • 11. Ambiente de testes • Editor de texto (sugestões): • Sublime Text 2 • TextMate • gedit • Notepad++
  • 12. Ambiente de testes programa.html <html> <body> <pre> <script src="programa.js"></script> </pre> </body> </html> programa.js document.writeln('123 Testando');
  • 14. Um pouco de sintaxe É importante para a sabermos como escrever nossos programas !
  • 15. Nomes • Um nome é uma letra seguido, opcionalmente, por outras letras, números e underlines • Ex: • a • x1_ • nomeCompleto • data_de_nascimento
  • 16. Palavras Reservadas abstract enum interface throw boolean export long throws break extends native transient byte false new true case final null try catch finally package typeof char float private var class for protected volatile const function public void continue goto return while debugger if short with default implements static delete import super do in switch double instanceof synchronized else int this
  • 17. Números • Exemplos: • Inteiros: 0 12 -39 42 • Frações: 3.14 • Exponenciais: 3.14e+30
  • 18. Operadores Aritméticos + soma -- - subtração += / divisão -= * multiplicação *= % resto da divisão /= ++ %=
  • 19. Funções • toFixed(casasDecimais) • Arredonda para o número de casas decimais • isNaN(número) • Diz se o número é NaN (not a number - valor indeterminado)
  • 20. Strings • Aspas: • “Fulano de Tal” • Apóstrofos : • ‘123 Testando’
  • 21. Strings • Propriedades: • length - Quantidade de caracteres • Métodos: • indexOf(str) • replace(a, b) • split(delimitador) • substring(inicio, fim) • toLowerCase( ) • toUpperCase( )
  • 22. Strings • Conversões: • parseInt(str) - String para inteiro • parseFloat(str) - String para float
  • 23. Booleanos true e false ‣ Valores falsos: ‣ false ‣ null ‣ undefined ‣ String vazio ‘’ ‣ 0 ‣ NaN
  • 24. Arrays (literais) • Vazio: • [] • new Array( ) • Com elementos: • [‘banana’, ‘laranja’, ‘pitomba’]
  • 25. Arrays • Exemplo: var carros = new Array( ); carros[0] = “Volvo”; carros[1] = “BMW”; carros[2] = “Mercedes”; • Tamanho do array: document.writeln(carros.length); • Acessando valores: document.writeln(carros[1]);
  • 27. COMENTÁRIOS • De linha • // Comentário • De bloco • /* Comentário de 1 ou n linhas */
  • 28. VARIÁVEIS • var nome = expressão; • Exemplo: • var idade = 20; • var pais = ‘Brasil’;
  • 29. IF • Exemplo: var saldo = 10.0; // Verificando se o saldo é suficiente if (saldo < 0) { document.writeln (“Saldo insuficiente”); } else { document.writeln (“Operação realizada”); }
  • 30. Operadores Relacionais • > Maior • >= Maior ou igual • < Menor • <= Menor ou igual • == Igual • != Diferente • === Igual • !== Diferente
  • 32. == '' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' trn ' == 0 // true
  • 33. SEMPRE use === e !==
  • 34. === '' == '0' // false 0 == '' // false 0 == '0' // false false == 'false' // false false == '0' // false false == undefined // false false == null // false null == undefined // false ' trn ' == 0 // false
  • 35. Operadores Lógicos • && e lógico (AND) • || ou lógico (OR)
  • 37. Curto Circuito • Os operadores lógicos têm curto circuito • Assim que for possível inferir o valor da expressão, sua avaliação é interrompida • &&: • Assim que um valor false for encontrado toda a expressão será false • ||: • Assim que um valor true for encontrado toda a expressão será true
  • 38. WHILE • Exemplo: var contador = 10; // Contagem regressiva while (contador >= 0) { document.writeln(contador); contador--; }
  • 39. FOR
  • 40. FOR • Exemplo: for (var i = 0; i < 100; i++) { document.writeln(i); } • Exemplo: var nomes = ['fulano', 'cicrano', 'beltrano']; for (var indice in nomes) { document.writeln(nomes[indice]); }
  • 42. FUNÇÕES • Exemplo: function soma(a, b) { return a + b; } Uma variável com uma função ! • Exemplo: var maior = function(a, b) { if (a > b) { return a; } else { return b; } }
  • 43. OBJETOS • Em JavaScript objetos guardam um conjunto de duplas chave-valor • Por exemplo, um objeto vôo pode ter a seguinte chave: horário, com o valor: “18:30”
  • 44. OBJETOS • Objeto vazio: var objeto = {} • Objeto com propriedades: var candidato = { nome: "Manoel da Silva", idade: 28, terceiroGrau: true, cargoPretendido: "Analista de Sistemas" }
  • 45. OBJETOS • Podem ser complexos: var voo = { companhia: "Oceanic", numero: 815, partida: { aeroporto: "SYD", horario: "22/09/2004 14:55", cidade: "Sydney" }, chegada: { aeroporto: "LAX", horario: "23/09/2004 10:42", cidade: "Los Angeles" } }
  • 46. Acessando valores • candidato[“nome”] • candidato.nome • voo.partida.horario
  • 47. Atribuindo valores • candidato.idade = 29 • candidato[‘aprovado’] = false • voo.situacao = ‘Desaparecido’
  • 48. CONSTRUTORES • Um construtor é uma função normal que cria um novo objeto utilizando a variável implícita this • Um construtor deve ser sempre chamado utilizando o comando new
  • 49. CONSTRUTORES function Conta(titular) { this.titular = titular; this.saldo = 0; this.depositar = function(valor) { this.saldo += valor; }; this.sacar = function(valor) { this.saldo -= valor; }; this.transferir = function(outraConta, valor) { this.sacar(valor); outraConta.depositar(valor); } }
  • 50. CONSTRUTORES var c1 = new Conta("Pedro"); var c2 = new Conta("Maria"); c1.depositar(100); c2.depositar(50); c1.transferir(c2, 60); document.writeln(c1.titular + " - R$ " + c1.saldo); document.writeln(c2.titular + " - R$ " + c2.saldo);
  • 51. PROTOTYPE • Todos os objetos estão ligados a um prototype • Os objetos heram suas propriedades deste prototype • Alterando-se o prototype, altera-se todos os objetos ligados a ele • Todos os prototypes herdam de Object.prototype
  • 52. PROTOTYPE Conta.prototype.toString = function() { return this.titular + " - R$ " + this.saldo; }; document.writeln(c1.toString()); document.writeln(c2.toString());
  • 53. PROTOTYPE Number.prototype.dinheiro = function() { var valor = "" + this.toFixed(2); valor = valor.replace(".", ","); return "R$ " + valor; } var salario = 649.67; document.writeln(salario.dinheiro());
  • 54. REFLEXÃO • typeof • Retorna um String com o tipo de um valor • Exemplo: document.writeln(typeof Conta); document.writeln(typeof c1); document.writeln(typeof c1.titular); document.writeln(typeof c1.saldo); document.writeln(typeof c1.sacar);
  • 55. REFLEXÃO • É possível utilizar um for para percorrer as propriedades de um objeto: document.writeln("Analisando o objeto c1 ..."); for (propriedade in c1) { if (typeof c1[propriedade] === 'function') { document.writeln(" Metodo: " + propriedade); } else { document.writeln(" Atributo: " + propriedade); } }
  • 56. REFLEXÃO • E se eu quiser criar um método em todos os objetos chamado inspect, que irá mostrar os atributos e métodos dos objetos ?
  • 57. REFLEXÃO // Criação do método inspect Object.prototype.inspect = function() { var str = ""; for (propriedade in this) { var tipo = typeof this[propriedade]; if (tipo === 'function') { str += "Metodo: " + propriedade + "n"; } else { str += "Atributo: " + propriedade + " (" + tipo + ")" + "n"; } } return str; }; // Testando o método inspect document.writeln("c1:n" + c1.inspect()); document.writeln("c2:n" + c2.inspect());
  • 58. EXCEÇÕES • O tratamento de exceções permite a notificação (lançamento) e o tratamento de situações de falha
  • 59. EXCEÇÕES • Lançamento de exceções: • throw valor • Exemplo: ... this.sacar = function(valor) { if (valor > this.saldo) { throw "Saldo Insuficiente"; } this.saldo -= valor; }; ...
  • 60. EXCEÇÕES • Tratamento: var c1 = new Conta("Pedro"); try { c1.sacar(500); } catch (erro) { document.writeln("Erro: " + erro); }
  • 62. Utilize Namespaces • Evite utilizar variáveis globais; • Crie todas as suas variáveis, funções, objetos dentro de namespaces (containers); • Exemplo: var MINHA_APLICACAO = {}; MINHA_APLICACAO.versao = 2.0; MINHA_APLICACAO.Pessoa = function(nome, idade) { this.nome = nome; this.idade = idade; }; MINHA_APLICACAO.pessoas = new Array();
  • 64. JQuery jquery.com • Biblioteca JavaScript mais utilizada • Uma camada acima da API do browser • Simplifica o acesso aos objetos das páginas
  • 65. Instalação • Faça o download do jQuery e copie para seu projeto • OU • Utilize direto de uma CDN • Ex: Google CDN
  • 66. Utilizando a Google CDN programa.html <html> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"> </script> <script src="programa.js"></script> </body> </html> programa.js $(function() { alert("oi"); });
  • 67. JQuery • Ponto de entrada • Todo script JQuery começa com um ponto de entrada que será executado apenas quando a página estiver pronta $(function() { // Ponto de entrada });
  • 68. JQuery • Os elementos de uma página são acessados em JQuery através de seletores • Seletores: • id: $(‘#id’) • classe: $(‘.classe’) • tag: $(‘tag’)
  • 69. Atributos dos Elementos • Um elemento pode ser modificado e consultado através dos seguintes métodos: • attr • removeAttr • val • text • html
  • 70. Eventos • blur • change • click • dblclick • focus • keydown • keypress
  • 71. Calculadora programa.html <html> <body> A <input type="text" id="a"> B <input type="text" id="b"> <button id="mais">+</button> <input type="text" id="resultado"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"> </script> <script src="programa.js"> </script> </body> </html>
  • 72. Calculadora programa.js $(function() { $('#mais').click(function() { var a = parseFloat($('#a').val()); var b = parseFloat($('#b').val()); var c = a + b; $('#resultado').val(c.toFixed(2)); }); });
  • 73. Calculadora programa.js var CALCULADORA = {}; CALCULADORA.somar = function(a, b) { var c = a + b; return c.toFixed(2); }; $(function() { $('#mais').click(function() { var a = parseFloat($('#a').val()); var b = parseFloat($('#b').val()); $('#resultado').val(CALCULADORA.somar(a, b)); }); });
  • 74. O que não vimos • Regex • Outras bibliotecas • ExtJS • YUI • NodeJS