linguagem javascript

32
Linguagem Linguagem JavaScript JavaScript Programação na Internet Secção de Programação - ISEL-DEETC-LEIC Luis Falcão - [email protected] Nuno Datia – [email protected]

Upload: corina

Post on 24-Jan-2016

90 views

Category:

Documents


6 download

DESCRIPTION

Linguagem JavaScript. Programação na Internet Secção de Programação - ISEL-DEETC-LEIC Luis Falcão - [email protected] Nuno Datia – [email protected]. Autores e contributos. Autores Jorge Martins Carlos Guedes Contributos Luís Falcão Paulo Pereira Pedro Félix. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linguagem JavaScript

LinguagemLinguagem JavaScriptJavaScript

Programação na Internet Secção de Programação - ISEL-DEETC-LEIC

Luis Falcão - [email protected] Datia – [email protected]

Page 2: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

Autores e contributosAutores e contributos

• Autores– Jorge Martins– Carlos Guedes

• Contributos– Luís Falcão– Paulo Pereira– Pedro Félix

Page 3: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

3A linguagem JavaScript

História da JavaScriptHistória da JavaScript

• Desenvolvida por Brendan Eich da Netscape, como a linguagem de script para páginas no Netscape2

• Versão Standard actual: ECMAScript - Edition 3 – http://www.ecma-international.org/publications/standards/Ecma-262.htm

Page 4: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

4A linguagem JavaScript

Tipos de dadosTipos de dados

• Notas sobre o sistema de tipos:– Não existe tipo inteiro

• Divisão entre dois números produz número real (fraccional)– Não existe tipo para representar caracteres

• Um carácter é uma string de dimensão 1

Tipos Nome do tipo Descrição

Primitivos

Boolean Tipo lógico

Number Floating point a 64 bit

String Seq. de 0 ou mais caracteres Unicode. Strings literais são delimitadas por “” ou por ‘’

Objectos Tudo excepto os tipos primitivos são objectos

Page 5: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

5A linguagem JavaScript

Valores primitivosValores primitivos

Tipos Nome do tipo Descrição Exemplo

Number

NaN

Not a Number é o resultado de uma expressão com um operando que não pode ser convertido em valor numérico

var a = NaN;

var a = 10 / "x";

// a assume valor NaN

InfinityRepresentação de um valor infinito

var a = Infinity;

var a = 10/ 0;

// a assume valor Infinity

Booleantrue Valor lógico verdadeiro var b = true;

false Valor lógico falso var b = false;

undefinedconteúdo de variáveis não iniciadas

var a;

// a assume valor Undefined

nullrepresenta o não valor, ou seja a inexistência de valor associado a uma variável

var a = null;

// x tem um não valor, ou seja null

Page 6: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

6A linguagem JavaScript

LiteraisLiterais

• Literais são usados em JavaScript para representar valores. Chamam-se literais por que são colocados literalmente no texto do programa. Existem os seguintes literais:

Números (Numbers)Ex: 42, 0xFFF, -345.

Literais booleanosEx: true, false.

Literais floating-pointEx: 3.1415, -3.1E12, .1e12, 2E-12

Cadeias de carácteres (strings) literaisEx: "one line \n another line" 'another string literal'

Arrays literaisEx: ["French Roast", "Columbian", "Kona"]Ex: ["Lion", , "Angel"]

Objectos literaisapresentados mais tarde

É possível omitir valores do array colocando vírgulas sem expressão associada. Essas posições do array ficam com o valor null

É possível omitir valores do array colocando vírgulas sem expressão associada. Essas posições do array ficam com o valor null

Page 7: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

7A linguagem JavaScript

ObjectosObjectos

• Em JavaScript um objecto é um contentor de pares nome/valor, ou seja é uma hashtable

• Suporta duas formas de acesso para leitura e escrita de valores– Subscript notation e dot notation– Na dot notation é necessário que a chave seja um identificador válido

em JavaScript

// Afecta a variável 'myHashtable' com uma referência para uma nova hashtablevar myHashtable = { }; // O mesmo que na linha anterior, mas com notação semelhante ao Javavar myHashtable = new Object(); myHashtable["name"] = "Carlos Guedes"; // subscript notationmyHashtable.salaCCISEL = 8; // dot notationvar s = myHashtable["salaCCISEL"];var n = myHashtable.name;

// Sintaxe da instrução for para enumerar as "chaves" (propriedades) do objecto

for(var n in myHashtable) { document.writeln("<p>" + n + ": " + myHashtable[n] + "</p>");}

// Afecta a variável 'myHashtable' com uma referência para uma nova hashtablevar myHashtable = { }; // O mesmo que na linha anterior, mas com notação semelhante ao Javavar myHashtable = new Object(); myHashtable["name"] = "Carlos Guedes"; // subscript notationmyHashtable.salaCCISEL = 8; // dot notationvar s = myHashtable["salaCCISEL"];var n = myHashtable.name;

// Sintaxe da instrução for para enumerar as "chaves" (propriedades) do objecto

for(var n in myHashtable) { document.writeln("<p>" + n + ": " + myHashtable[n] + "</p>");}

var myHashtable = { };var myHashtable = new Object();var myHashtable = { };var myHashtable = new Object();

Page 8: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

8A linguagem JavaScript

Objectos – notação literalObjectos – notação literal• Outra forma de criar objectos é através da notação literal

– Forma compacta de criar objectos• A descrição de um objecto é um conjunto de pares nome-valor separados por

vírgula, dentro de chavetas. – Os nomes podem ser identificadores ou strings seguidos de ':' (dois pontos). Devido a um

erro na definição da linguagem, as palavras reservadas da linguagem não podem ser usadas na forma de identificadores, mas podem ser usados na forma de string.

– Os valores podem ser literais ou expressões de qualquer tipo.

var myHashtable = { name : "Carlos Guedes", salaCCISEL : 8 };

return { event: event, op: event.type, to: event.srcElement, x: event.clientX + document.body.scrollLeft, y: event.clientY + document.body.scrollTop};

var emptyObject = { };

var myHashtable = { name : "Carlos Guedes", salaCCISEL : 8 };

return { event: event, op: event.type, to: event.srcElement, x: event.clientX + document.body.scrollLeft, y: event.clientY + document.body.scrollTop};

var emptyObject = { };

• Os objectos literais são a base do formato JavaScript Object Notation (JSON)

Page 9: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

9A linguagem JavaScript

ArraysArrays (1) (1)

• São objectos, logo hash tables• São esparsos e heterogéneos• Não é necessário indicar a dimensão na construção• Crescem automaticamente (como vectores em java ou ArrayList

em .NET)• Os valores são obtidos através de uma chave numérica (para as posições do

array, para as restantes chaves é usada a notação normal dos objectos)• A principal diferença relativamente aos objectos é a existência da

propriedade length– Tem um valor superior em 1 unidade ao maior índice atribuído

• Índices começam em 0• Não são tipificados• Quando um novo item é adicionado a uma posição ‘n’ superior à maior

existente, a propriedade length fica com o valor ‘n’+1• Suportam duas formas de criação: literal e comum para objectos

var arr1 = [ ];var arr2 = new Array();var arr1 = [ ];var arr2 = new Array();

Page 10: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

10A linguagem JavaScript

Arrays Arrays (2)(2)// Criação de arraysvar myArray = []; // notação literalvar myArray = new Array(); // notação de objectovar arrayWithSize = new Array(10); // O Array é iniciado 10 valores undefined

// Notação literalvar myList = ['oats', 'peas', 'beans', 'barley'];var month_lengths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];var slides = [ {url: 'slide0001.html', title: 'Looking Ahead'}, {url: 'slide0021.html', title: 'Summary', soccerClub: 'SLB'},

5];

// Adição de um elemento por afectaçãomyList[i + 6] = "SLB";

// Exemplovar diasDaSemana = [ "domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado" ];var dias = "";for(var i = 0; i < diasDaSemana.length; ++i) dias += diasDaSemana[i] + "\n"; alert(dias);

// Criação de arraysvar myArray = []; // notação literalvar myArray = new Array(); // notação de objectovar arrayWithSize = new Array(10); // O Array é iniciado 10 valores undefined

// Notação literalvar myList = ['oats', 'peas', 'beans', 'barley'];var month_lengths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];var slides = [ {url: 'slide0001.html', title: 'Looking Ahead'}, {url: 'slide0021.html', title: 'Summary', soccerClub: 'SLB'},

5];

// Adição de um elemento por afectaçãomyList[i + 6] = "SLB";

// Exemplovar diasDaSemana = [ "domingo", "segunda", "terça", "quarta", "quinta", "sexta", "sábado" ];var dias = "";for(var i = 0; i < diasDaSemana.length; ++i) dias += diasDaSemana[i] + "\n"; alert(dias);

Page 11: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

11A linguagem JavaScript

Funções (1)Funções (1)

• Funções em JavaScript são como as funções da linguagem C• Na chamada a funções não é necessário passar todos os

parâmetros indicados na definição da função– Os parâmetros actuais em falta ficam com valor undefined– Os parâmetros actuais adicionais estão acessíveis via array arguments

• Facilita a criação de funções com parâmetros opcionais

• Suportam a definição de funções internas• Em JavaScript, as funções são “first class objects”

– Podem ser guardados em objectos e passados como parâmetros

// Função de recebe qualquer número de argumentosfunction sum() { var total = 0; for (var i = 0; i < arguments.length; ++i) { total += arguments[i]; } return total;}

// Função de recebe qualquer número de argumentosfunction sum() { var total = 0; for (var i = 0; i < arguments.length; ++i) { total += arguments[i]; } return total;}

Page 12: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

12A linguagem JavaScript

Funções (2)Funções (2)

• Existem três formas de definir funções

• operador function– Operador prefixo que produz um objecto função– O nome é opcional

• Útil para realizar funções recursivas• Quando é omitido a função designa-se por função anónima• Útil quando é necessário passar uma função como parâmetro (callbacks)

function name (argumentList) blockfunction name (argumentList) block

function visitInArray(arrayObject, observer) { for(var i = 0; i < arrayObject.length; ++i) { var elem = arrayObject[i]; if(typeof(elem) == "number") observer(elem); }}

visitInArray([1, 2, "3", 4, 5], function (x) { alert(x * x); });

function visitInArray(arrayObject, observer) { for(var i = 0; i < arrayObject.length; ++i) { var elem = arrayObject[i]; if(typeof(elem) == "number") observer(elem); }}

visitInArray([1, 2, "3", 4, 5], function (x) { alert(x * x); });

Utilização de uma função anónima (function operator)

Page 13: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

13A linguagem JavaScript

Funções (3)Funções (3)

• Instrução function– Cria uma função, com determinado nome, no contexto actual– É possível criar funções dentro de outras (ver mais em Closures)– É uma forma compacta de utilização do function operator (com nome)

• Construtor de function– Recebe strings com os argumentos e o corpo da função, retornado um objecto função– Não é fácil definir o corpo da função em termos de uma string, principalmente quando

este tem strings– É ineficiente, pois é necessário ser compilada de cada vez que é utilizada

function name (argumentList) blockfunction name (argumentList) block

var name = function name (argumentlist) block ;var name = function name (argumentlist) block ;

new Function(strings...)new Function(strings...)

! Esta forma não não deve ser utilizada !

Page 14: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

14A linguagem JavaScript

Objectos e a Objectos e a keyword keyword thisthis

• Uma função é um objecto (logo, uma hashtable)• Pode conter membros (propriedades)

– Pode conter os seus próprios dados– Pode ter o papel de classe, de construtor e de contentora de métodos

relacionados– Pode ser membro de outro objecto (quando é membro de um objecto

designa-se de método)– Existe uma variável de nome this que contém a referência para o

objecto usado para chamar a função

– Numa chamada “global”, this é uma referência para o Objecto Global

foo.bar(); // em bar, this é foodo.re.mi.fa(); // em fa o objecto é do.re.mifoo.bar(); // em bar, this é foodo.re.mi.fa(); // em fa o objecto é do.re.mi

function f1() { . . . };f1(); // em f1, this é o Objecto Globalfunction f1() { . . . };f1(); // em f1, this é o Objecto Global

Page 15: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

15A linguagem JavaScript

Funções ConstrutorasFunções Construtoras• As funções usadas na iniciação de objectos são designadas de “Funções

Construtoras”• Numa chamada a uma função construtora, a sequência de chamadas é

ligeiramente diferente de uma chamada normal– É chamada com o operador prefixo new

// Definição de um Pontofunction Point(x,y1) { this.x = x; this.y = y1; this.add = function(p) { this.x += p.x; this.y += p.y; return this; }}

// Testevar p = new Point(2,3);var p1 = new Point(4,5);p.add(p1); // p.x = 6; p.y = 8;

// Definição de um Pontofunction Point(x,y1) { this.x = x; this.y = y1; this.add = function(p) { this.x += p.x; this.y += p.y; return this; }}

// Testevar p = new Point(2,3);var p1 = new Point(4,5);p.add(p1); // p.x = 6; p.y = 8;

• O operador new altera o significado de this na função. Nesta situação representa o objecto que foi criado

• O construtor do objecto deve iniciar (criar) os seus membros

• O construtor retorna implicitamente o novo objecto (this) a não ser que existe um return explicito

• Os objectos criados têm uma ligação (não acessível) directamente para o protótipo da função construtora (ver protótipos à frente)

• É convenção as funções construtoras terem um nome iniciado por maiúscula

Page 16: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

16A linguagem JavaScript

Objectos e Funções construtoras nativas da linguagemObjectos e Funções construtoras nativas da linguagem

Função construtora

F. Construtora Descrição

Object Função construtora de objectos genéricos

Function Função construtora de objectos função

Array Função construtora de objectos array

String Função construtora de objectos string

Boolean Função construtora de objectos booleanos

Number Função construtora de objectos numéricos

Date Função construtora de objectos que representam um instante temporal com precisão até aos milissegundos

RegExp Função construtora de objectos que representam expressões regulares

Error Função construtora de objectos que representam erros

Math X Objecto cujas propriedades são funções e constantes matemáticas

Page 17: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

17A linguagem JavaScript

ProtótiposProtótipos• Os objectos função têm a propriedade prototype

• Quando uma função é usada como função construtora, os objectos construídos ficam com uma ligação implícita (não acessível programaticamente) para o protótipo da função construtora

• No acesso às propriedades de um objecto, se esta não for encontrada, é percorrida a cadeia de protótipos até ser encontrada, ou até a cadeia terminar (ver à frente)

• A utilização da cadeia de protótipos disponibiliza o mecanismo herança baseada em protótipos (objectivos semelhantes à herança das linguagens OO - ver à frente).

• É possível acrescentar novas propriedades aos protótipos das funções construtoras nativas

Page 18: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

18A linguagem JavaScript

Diagrama de protótiposDiagrama de protótipos

function CF() { this.a = "aaa"; this.b = "bbb";}CF.c = "ccc";CF.prototype.foo = "foo";

var c1 = new CF();var c2 = new CF();var c3 = new CF();

function CF() { this.a = "aaa"; this.b = "bbb";}CF.c = "ccc";CF.prototype.foo = "foo";

var c1 = new CF();var c2 = new CF();var c3 = new CF();

CFCF

prototypeprototype

cc “ccc”“ccc”

CFprototypeCFprototype

prototypeprototype

foofoo “foo”“foo”

c1c1

constructorconstructor

aa “aaa”“aaa”

bb “bbb”“bbb”

c2c2

constructorconstructor

aa “aaa”“aaa”

bb “bbb”“bbb”

c3c3

constructorconstructor

aa “aaa”“aaa”

bb “bbb”“bbb”

Protótipo explícito

Protótipo implícito

Page 19: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

19A linguagem JavaScript

Acesso às propriedades de um objectoAcesso às propriedades de um objecto

Object contains

‘p’?

Object has a constructor?

Prototype object has a prototype?

return ‘p’ value from object

Yes

return undefined

No

No

Yes

use prototype’s prototype object

No

Yes

Acesso à propriedade p

Page 20: Linguagem JavaScript

© ISEL 2006/2007DEEC - EIC – Programação na Internet

Herança em JavaScript

InheritanceJavaScript.html• Herança baseada em protótipos• Herança baseada em chamadas à cadeia de funções construtoras

InheritanceJavaScript.html• Herança baseada em protótipos• Herança baseada em chamadas à cadeia de funções construtoras

Page 21: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

21A linguagem JavaScript

Herança baseada em protótiposHerança baseada em protótipos// Definição da classe basefunction Base() { }Base.prototype.m1 = function () { alert("Base.m1"); } Base.prototype.m2 = function () { alert("Base.m2"); }

// Definição da classe derivadafunction Derived() { }Derived.prototype = new Base();Derived.prototype.m3 = function () { alert("Derived.m3"); }

// Redefinição de um método com chamada ao método baseDerived.prototype.m2 = function () { alert("Derived.m2"); this.constructor.prototype.m2();}

// Testevar o = new Derived();o.m1();o.m2();o.m3();

// Definição da classe basefunction Base() { }Base.prototype.m1 = function () { alert("Base.m1"); } Base.prototype.m2 = function () { alert("Base.m2"); }

// Definição da classe derivadafunction Derived() { }Derived.prototype = new Base();Derived.prototype.m3 = function () { alert("Derived.m3"); }

// Redefinição de um método com chamada ao método baseDerived.prototype.m2 = function () { alert("Derived.m2"); this.constructor.prototype.m2();}

// Testevar o = new Derived();o.m1();o.m2();o.m3();

Page 22: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

22A linguagem JavaScript

Herança baseada em chamada à cadeia de f. construtorasHerança baseada em chamada à cadeia de f. construtorasfunction Base1() { this.m1 = function () { alert("Base1.m1"); } this.m2 = function () { alert("Base1.m2"); }}

function Derived1() { //this.base = Base1; //this.base(); Base1.call(this);

this.m3 = function () { alert("Derived1.m3"); } // Redifinição de m2 this.m2base = this.m2; this.m2 = function () { alert("Derived1.m2"); this.m2base(); }}var o = new Derived1();o.m1();o.m2();o.m3();

function Base1() { this.m1 = function () { alert("Base1.m1"); } this.m2 = function () { alert("Base1.m2"); }}

function Derived1() { //this.base = Base1; //this.base(); Base1.call(this);

this.m3 = function () { alert("Derived1.m3"); } // Redifinição de m2 this.m2base = this.m2; this.m2 = function () { alert("Derived1.m2"); this.m2base(); }}var o = new Derived1();o.m1();o.m2();o.m3();

Page 23: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

23A linguagem JavaScript

VariáveisVariáveis

• As variáveis são definidas com a instrução var• Apenas existem 2 contextos para as variáveis

– Global– Funções

• Quando definidas numa função, apenas são válidas nesse contexto

• Variáveis definidas numa função sem a utilização do prefixo var, assume-se que existe num contexto superior (possivelmente o do Objecto Global)

• Variáveis não iniciadas assumem o valor undefined• Numa função, por cada chamada é criado um novo conjunto

de variáveis com o contexto dessa função (suporte para chamadas recursivas)

Page 24: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

24A linguagem JavaScript

ClosuresClosures• Funções podem ser definidas dentro de outras funções• As funções internas têm acesso às variáveis e parâmetros formais da função

externa• Se existir uma referência para uma função interna após a função externa

terminar, todas as variáveis e parâmetros continuam a existir (mas apenas acessíveis no contexto da função interna)

• Podem ser usados na criação de membros privados na função construtora

function Demo(x) { var a = x + 1; this.m1 = function () { alert(a + "," + x); } }

var d1 = new Demo(5); var d2 = new Demo(8);

d1.m1(); // alerts 6,5d2.m1(); // alerts 9,8

function Demo(x) { var a = x + 1; this.m1 = function () { alert(a + "," + x); } }

var d1 = new Demo(5); var d2 = new Demo(8);

d1.m1(); // alerts 6,5d2.m1(); // alerts 9,8

Page 25: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

25A linguagem JavaScript

Retorno de uma funçãoRetorno de uma função

• Todas as funções retornam um valor (não existe tipo void)• O valor de retorno por omissão é:

– undefined – chamada normal a funções– this – funções construtoras

Page 26: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

26A linguagem JavaScript

InstruçõesInstruçõesTipo de

instrução Instrução Notas

Condicionalif ... [else]

switch ... case ... Default

As labels podem ser expressões e strings (não necessitam de ser constantes)

Ciclos

whileA expressão da condição é convertida para bool (ver regras à frente)for

do ... while

continue

Quebra de fluxo

break

return

Excepçõestry ... catch

throw

Expressão As expressões são instruções quando terminadas por “;”

Variáveis var

Composta { ... }

Page 27: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

27A linguagem JavaScript

Tabela de operadores e prioridadeTabela de operadores e prioridade

Prioridade

+

_

Operador Descrição

. [] () Acesso a propriedades, indexação, chamadas a funções e sub-expressões

++ — - ~ ! new delete typeof

Operadores unários e criação de objectos

* / % Multiplicação, divisão, divisão módulo

+ - Adição, subtracção, concatenação de strings

<< >> >>> Deslocação de Bit

< <= > >= instanceof

Menor, menor ou igual, maior, maior ou igual, instanceof

== != === !== Igualdade, desigualdade, igualdade estrita, e desigualdade estrita

& AND bit a bit

^ XOR bit a bit

| OR bit a bit

&& AND lógico

|| OR lógico

? : Operador condicional (ternário)

Page 28: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

28A linguagem JavaScript

Conversão para Conversão para boolbool

• Sempre que há uma conversão para booleano (explícita ou implícita):

– Valor lógico false

• false, null, undefined, “”, 0

– Valor lógico true

• restantes

Page 29: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

29A linguagem JavaScript

Notas sobre operadoresNotas sobre operadores• Operador +

– Usado na adição e concatenação de strings– Se um dos operandos são strings, faz concatenação depois de converter o outro

operando para string– Pode ser usado como operador prefixo para converter uma string para número

• Ex.º: +"1"

• Operador && (And lógico)– Usado em expressões de guarda– Ex.º: var value = p && p.name;

• Operador || (Or lógico) – Usado para atribuir valores por omissão– Ex.º: var value = v || 10;

Page 30: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

30A linguagem JavaScript

Operador Operador typeoftypeof: informação sobre o tipo de dados: informação sobre o tipo de dados

• O operador typeof retorna uma string de acordo com o tipo do operando

• Sintaxe: var tipoDoOperador = typeof(operador);

Object 'object'

Array 'object'

Function 'function'

String 'string'

Number 'number'

Boolean 'boolean'

null 'object'

undefined 'undefined'

Atenção !Atenção !

Atenção !Atenção !

Page 31: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

31A linguagem JavaScript

Palavras ReservadasPalavras Reservadas

abstractboolean break bytecase catch char class const continuedebugger default delete do doubleelse enum export extendsfalse final finally float for functiongotoif implements import in instanceof int interfacelongnative new nullpackage private protected publicreturnshort static super switch synchronizedthis throw throws transient true try typeofvar volatile voidwhile with

Legenda: Usadas na linguagem reservadas, não usadas na linguagem

Page 32: Linguagem JavaScript

2000 - 2006©ISEL/DEETC/SP – Programação na Internet

32A linguagem JavaScript

ReferênciasReferências

• Douglas Crockford: “A Survey of the JavaScript Programming Language”http://javascript.crockford.com/survey.html

• Versão Standard actual: ECMAScript - Edition 3 http://www.ecma-international.org/publications/standards/Ecma-262.htm

• Referências Online: “JScript @ MSDN”http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/e4fb1cc7-15e0-43e9-bf2e-

469fe7b2050c.asp

• Flanagan, David, “JavaScript: The definitive guide”, O'Reilly Media; 5 edition, 2006