SlideShare una empresa de Scribd logo
1 de 58
JavaScript
for dummies
Seja bem vindo(a)!
Somos um grupo voluntário e independente de
desenvolvedores de software, com o intuito de
disseminar conhecimento e fortalecer a
comunidade local
fb.com/groups/DevRioClaro
devrioclaro@gmail.com
www.mappase.com.br
www.novatec.com.br
• Livro para sorteio no dia do evento!
• 30% de desconto - “DevRioClaro30” (válido até 15/07/2014)
www.casadocodigo.com.br
• 2 e-Books para sorteio no dia do evento!
• 15% desconto - “DevRioClaro” (valido até 23/06/2014)
www.lcm.com.br
• Desconto de 40% livro impresso e 10% eBook - “V00031” (válido até ...)
Murilo Beltrame
• Marketing - FACINTER
• Especialista Microsoft (MCTSWeb Development/Data Access)
• Entusiasta JavaScript
• Motociclista
• Futuro marido
Agenda
• Intro
• Conceitos
• Tipos
• Sintaxe
• Closure & ‘Scope chain’
• Objetos
Intro
Intro – ‘95
Intro – ‘96
Intro
Conteúdo Estilização Comportamento
Conceitos
Conceitos
• Sensível à caixa (a != A)
• Interpretado, não compilado
• Tipagem dinâmica
• Objetos são apenas hastables
• Herança por prototipagem
• Funções são objetos
• Vetores são objetos
Conceitos – think about
O JavaScript foi criado para manipular o DOM (Documento Object Mobel) &
BOM (Browser Object Model), mas esses não são parte do JavaScript.
Conceitos - interpretado
Um erro interrompe a execução de todo código seguinte no escopo
Languages (compile, then interpret)
Frameworks (write different, do same thing)
Conceitos – tipagem dinâmica
var a; //undefined
a = 1; //number
a = ‘a’; //string
a = true; //boolean
a = null; //null
DEMO
Tipagem dinâmica
Tipos
Tipos
• Números
• Strings
• Booleans
• null
• Undefined
Todo o resto são objetos
Tipos – number
• Ponto flutuante de 64 bits
• Os mesmos problemas aritmeticos que envolvem double
• NaN (Not a number) é um valor especial que representa erros
Tipos - Strings
• Unicode 16 bits
• Não existem ‘chars’.
• “A” = ‘a’
Tipos - Boolean
• Verdadeiro ou Falso
• Boolean(exp) é uma função que retorna a veracidade da expressão
• !!value é a mesma coisa que value
Tipos - Boolean
• Falso
• false
• null,
• undefined,
• “”,
• 0,
• NaN
Todo o resto é verdadeiro
DEMO
Truthy || Falsy
Tipos - Null
• Nada
• Normalmente usado para erros
• null sempre é atribuido a uma variavel de forma deliberada
Tipos - Undefined
• Nada mesmo
• Qualquer variavel que nunca recebeu valor é undefined
Tipos – Objetos
• Todo o resto são objetos
• Objetos são hashtables (coleção de chave/valor)
• Objetos não tem classes
• Objetos são dinamicos (é possivel alterar sua estrutura em tempo de
execução)
Sintaxe
Sintaxe - Indetificadores
• Começam com a-z,A-Z,_ ou $
• Seguem com a-z,A-Z,0-9,_ ou $
Sintaxe – Palavras reservadas
abstract boolean break byte case catch char class const continue debugger
default delete do double else enum export extends false final finally float for
function goto if implements import in instanceof int interface long native new
null package private protected public return short static super switch
synchronized this throw throws transient true try typeof var volatile void while
with
Sintaxe - Comentários
// linha comentada
/*
Bloco comentado
*/
Sintaxe – Laços de repetição
while (exp) { ... }
do { ... } while (exp);
for (pointer; test; increment) { ... }
for (ele in collection) { ... }
Sintaxe – Controle de fluxo
if (exp) {...} else if (exp){...} else {...}
switch (exp){ case opt: ...; break; default: ...;break; }
Sintaxe - Funções
function Name(arg1,arg2,...){...}
var Name = function(arg1,arg2,...){...}
Sintaxe - Funções
• Sempre é boa idéia testar a validade de cada argumento
(e normaliza-los caso necessário) na entrada da função
• Uma função pode receber outra função como parametro
• É possível informar uma cadeia de parametros. Esse
parametros são armazenados numa variavel especial
arguments
• Todos os parâmetros são opcionais. Se o parâmetro não
tem valor especificado na chamado do método, o
argumento é undefined
DEMO
Arguments, Optional parameter, Function as parameter
Closure & ‘Scope chain’
Closure & ‘Scope chain’
Global Object
Attr
Closure vars
Function vars
Closure & ‘Scope chain’
//global scope
function closureFunction(){
// closure scope
...
function generalFunction(){
//function scope
}
}
DEMO
Closure & Scope Chain
Objetos
Objetos - JSON
var obj = {
marca:’Volks’,
modelo:’Fusca’,
pegaModelo:function(){ return marca+ ‘ ‘ + modelo; }
}
Objetos - Array
var array = new Array();
var array = [];
array[7] = ‘Fusca’;
array[7] //’Fusca’
array[77] = function(a,b){ return a+b; };
array[77](1,2); //4
Objetos - Array
var array = [];
array[‘modelo’] = ‘Fusca’;
array[‘modelo’]; //Fusca
array.modelo; //Fusca
array[‘transformarEmTanqueDeGuerra’] = function(){};
array.transformarEmTanqueDeGuerra();
DEMO
Object Array
Objetos – Funções
var carro = function(modelo,marca) {
this.Modelo = modelo;
this.Marca = marca;
}
var fusca = new carro(‘fusca’,’volks’);
Objetos – Funções
var carro = function(modelo,marca){
var _marca = marca;
var _modelo = modelo;
this.pegaMarca = function(){return _marca;}
this.pegaModelo = function(){return _modelo;}
}
var fusca = new carro(‘fusca’,’volks’);
fusca.pegaMarca(); //volks
fusca[‘pegaModelo’]();//fusca
DEMO
Object Function
Objetos – Extensão por protótipo
Array.prototype.find = function(arg){
var r = null;
for(var i = 0; i < this.length; i++){
if(arg(this[i])) r = this[i];
break;
}
return r;
}
DEMO
Extending object with prototype
Objetos – Herança por protótipo
var collection = function(){
for(var i in this){...}
}
collection.prototype = new Array;
DEMO
Inheritance with prototype
Next Steps?
• DOM Scripting
• DocumentTraversing Framework
Thanks
murilobeltrame.com.br
@murilobeltrame
fb.com/murilobeltrame
br.linkedin.com/in/murilobeltrame

Más contenido relacionado

La actualidad más candente

T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)Carlos Santos
 
T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)Carlos Santos
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsLeonardo Melo Santos
 
Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLGeorge Mendonça
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...George Mendonça
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
02. tipos de_dados,_constantes_e_variáveis
02. tipos de_dados,_constantes_e_variáveis02. tipos de_dados,_constantes_e_variáveis
02. tipos de_dados,_constantes_e_variáveisGilson Bezerra
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETLeonardo Melo Santos
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funçõesFellyph Cintra
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - ComparandoWesley Lemos
 

La actualidad más candente (20)

T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)T17_LM3: Erros/Debug (2013-2014)
T17_LM3: Erros/Debug (2013-2014)
 
T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)T15_T16_LM3: Mais objetos do Javascript (2013-2014)
T15_T16_LM3: Mais objetos do Javascript (2013-2014)
 
Anti-patterns
Anti-patternsAnti-patterns
Anti-patterns
 
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e StringsCurso de OO com C# - Parte 04 - Estruturas de controle e Strings
Curso de OO com C# - Parte 04 - Estruturas de controle e Strings
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Orientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSLOrientação a Objetos com Python e UML - XIII FGSL
Orientação a Objetos com Python e UML - XIII FGSL
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
02. tipos de_dados,_constantes_e_variáveis
02. tipos de_dados,_constantes_e_variáveis02. tipos de_dados,_constantes_e_variáveis
02. tipos de_dados,_constantes_e_variáveis
 
Introdução a Python
Introdução a PythonIntrodução a Python
Introdução a Python
 
Curso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NETCurso de OO com C# - Parte 06 - ADO.NET
Curso de OO com C# - Parte 06 - ADO.NET
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
 
Javascript tutorial
Javascript tutorialJavascript tutorial
Javascript tutorial
 
Javascript para CSharpers 1 - Comparando
Javascript para CSharpers   1 - ComparandoJavascript para CSharpers   1 - Comparando
Javascript para CSharpers 1 - Comparando
 

Similar a JavaScript "for dummies"

Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOWesley Lemos
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05Carlos Santos
 
Curso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoCurso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoJosé Araújo
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN StackBruno Catão
 
T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)Carlos Santos
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptxLuanDev1
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e DjangoOsvaldo Santana Neto
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosWesley Lemos
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Luís Cobucci
 
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e MathCarlos Santos
 
Scala: unindo programação funcional e orientação a objetos
Scala: unindo programação funcional e orientação a objetosScala: unindo programação funcional e orientação a objetos
Scala: unindo programação funcional e orientação a objetosFelipe Hummel
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 

Similar a JavaScript "for dummies" (20)

Javascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POOJavascript para CSharpers 4 - POO
Javascript para CSharpers 4 - POO
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05
 
Curso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de ProgramacaoCurso de Delphi - Lógica de Programacao
Curso de Delphi - Lógica de Programacao
 
JAVA - Introdução
JAVA - IntroduçãoJAVA - Introdução
JAVA - Introdução
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)T04_LM3: Javascript (2013-2014)
T04_LM3: Javascript (2013-2014)
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Introdução ao JS1.pptx
Introdução ao JS1.pptxIntrodução ao JS1.pptx
Introdução ao JS1.pptx
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Java Básico
Java BásicoJava Básico
Java Básico
 
De Zero à Web com Python e Django
De Zero à Web com Python e DjangoDe Zero à Web com Python e Django
De Zero à Web com Python e Django
 
Javascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - ConceitosJavascript para CSharpers 3 - Conceitos
Javascript para CSharpers 3 - Conceitos
 
Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03Construcao de Algoritmos - Aula 03
Construcao de Algoritmos - Aula 03
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011
 
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
(A15) LabMM3 - JavaScript - Objectos: String, Date e Math
 
Scala: unindo programação funcional e orientação a objetos
Scala: unindo programação funcional e orientação a objetosScala: unindo programação funcional e orientação a objetos
Scala: unindo programação funcional e orientação a objetos
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 

JavaScript "for dummies"