JavaScript

Autor(es): David Flanagan
Visualizações: 85
Classificação: (0)

JavaScript é a linguagem de programação da Web. A maioria dos sites modernos usa JavaScript, e todos os navegadores – em computadores de mesa, consoles de jogos, tablets e smartphones – incluem interpretadores JavaScript. Isso a torna uma das linguagens de programação mais importantes atualmente e uma das tecnologias que todo desenvolvedor Web deve conhecer. Referência completa para programadores, JavaScript: O guia de?nitivo fornece uma ampla descrição da linguagem JavaScript básica e das APIs JavaScript do lado do cliente de?nidas pelos navegadores Web. Em sua 6ª edição, cuidadosamente reescrita para estar de acordo com as melhores práticas de desenvolvimento Web atuais, abrange ECMAScript 5 e HTML5 e traz novos capítulos que documentam jQuery e JavaScript do lado do servidor.Recomendado para programadores experientes que desejam aprender a linguagem de programação da Web e para programadores JavaScript que desejam ampliar seus conhecimentos e dominar a linguagem, este é o guia do programador e manual de referência de JavaScript completo e de?nitivo.

FORMATOS DISPONíVEIS

eBook

Disponível no modelo assinatura da Minha Biblioteca

159 capítulos

Formato Comprar item avulso Adicionar à Pasta

1.1 JavaScript básica

PDF Criptografado

4

Capítulo 1

Introdução a JavaScript

Figura 1-1 Console de depuração Firebug do Firefox.

1.1 JavaScript básica

Esta seção faz um giro pela linguagem JavaScript e também pela Parte I deste livro. Após este capítulo introdutório, entraremos no nível mais baixo de JavaScript: o Capítulo 2, Estrutura léxica, explica coisas como comentários em JavaScript, pontos e vírgulas e o conjunto de caracteres Unicode. O

Capítulo 3, Tipos, valores e variáveis, começa a ficar mais interessante: ele explica as variáveis de JavaScript e os valores que podem ser atribuídos a elas. Aqui está um exemplo de código para ilustrar os destaques desses dois capítulos:

// Tudo que vem após barras normais duplas é um comentário em linguagem natural.

// Leia os comentários atentamente: eles explicam o código JavaScript.

// variável é um nome simbólico para um valor.

// As variáveis são declaradas com a palavra-chave var: var x;

// Declara uma variável chamada x.

 

1.2 JavaScript do lado do cliente

PDF Criptografado

8

Capítulo 1

Introdução a JavaScript

function factorial2(n) { var i, product = 1; for(i=2; i <= n; i++) product *= i; return product;

} factorial2(5)

//

//

//

//

//

//

Outra versão, usando um laço diferente

Começa com 1

Incrementa i automaticamente, de 2 até n

Faz isso a cada vez. {} não é necessário para laços de 1 linha

Retorna o fatorial

// => 120: 1*2*3*4*5

JavaScript é uma linguagem orientada a objetos, mas é bastante diferente da maioria. O Capítulo 9,

Classes e módulos, aborda com detalhes a programação orientada a objetos em JavaScript, com muitos exemplos, sendo um dos capítulos mais longos do livro. Aqui está um exemplo muito simples que demonstra como definir uma classe JavaScript para representar pontos geométricos bidimensionais. Os objetos que são instâncias dessa classe têm um único método chamado r() que calcula a distância do ponto a partir da origem:

// Define uma função construtora para inicializar um novo objeto Point function Point(x,y) {

 

2.1 Conjunto de caracteres

PDF Criptografado

Capítulo 2

Estrutura léxica

A estrutura léxica de uma linguagem de programação é o conjunto de regras elementares que especificam o modo de escrever programas nessa linguagem. É a sintaxe de nível mais baixo de uma linguagem; especifica detalhes de como são os nomes de variáveis, os caracteres delimitadores para comentários e como uma instrução do programa é separada da seguinte. Este breve capítulo documenta a estrutura léxica de JavaScript.

2.1 Conjunto de caracteres

Os programas JavaScript são escritos com o conjunto de caracteres Unicode. Unicode é um superconjunto de ASCII e Latin-1 e suporta praticamente todos os idiomas escritos usados hoje no planeta. A ECMAScript 3 exige que as implementações de JavaScript suportem Unicode versão 2.1 ou posterior e a ECMAScript 5 exige que as implementações suportem Unicode 3 ou posterior.

Consulte o quadro na Seção 3.2 para mais informações sobre Unicode e JavaScript.

2.1.1 Diferenciação de maiúsculas e minúsculas

 

2.2 Comentários

PDF Criptografado

Capítulo 2

Estrutura léxica

23

2.2 Comentários

JavaScript aceita dois estilos de comentários. Qualquer texto entre // e o final de uma linha é tratado como comentário e é ignorado por JavaScript. Qualquer texto entre os caracteres /* e */ também é tratado como comentário; esses comentários podem abranger várias linhas, mas não podem ser aninhados. As linhas de código a seguir são todas comentários JavaScript válidos:

// Este é um comentário de uma linha.

/* Este também é um comentário */ // e aqui está outro comentário.

/*

* Este é ainda outro comentário.

* Ele tem várias linhas.

*/

2.3 Literais

Um literal é um valor de dados que aparece diretamente em um programa. Os valores seguintes são todos literais:

12

1.2

"hello world"

'Hi' true false

/javascript/gi null

//

//

//

//

//

//

//

//

O número doze

O número um ponto dois

 

2.3 Literais

PDF Criptografado

Capítulo 2

Estrutura léxica

23

2.2 Comentários

JavaScript aceita dois estilos de comentários. Qualquer texto entre // e o final de uma linha é tratado como comentário e é ignorado por JavaScript. Qualquer texto entre os caracteres /* e */ também é tratado como comentário; esses comentários podem abranger várias linhas, mas não podem ser aninhados. As linhas de código a seguir são todas comentários JavaScript válidos:

// Este é um comentário de uma linha.

/* Este também é um comentário */ // e aqui está outro comentário.

/*

* Este é ainda outro comentário.

* Ele tem várias linhas.

*/

2.3 Literais

Um literal é um valor de dados que aparece diretamente em um programa. Os valores seguintes são todos literais:

12

1.2

"hello world"

'Hi' true false

/javascript/gi null

//

//

//

//

//

//

//

//

O número doze

O número um ponto dois

 

2.4 Identificadores e palavras reservadas

PDF Criptografado

Capítulo 2

Estrutura léxica

23

2.2 Comentários

JavaScript aceita dois estilos de comentários. Qualquer texto entre // e o final de uma linha é tratado como comentário e é ignorado por JavaScript. Qualquer texto entre os caracteres /* e */ também é tratado como comentário; esses comentários podem abranger várias linhas, mas não podem ser aninhados. As linhas de código a seguir são todas comentários JavaScript válidos:

// Este é um comentário de uma linha.

/* Este também é um comentário */ // e aqui está outro comentário.

/*

* Este é ainda outro comentário.

* Ele tem várias linhas.

*/

2.3 Literais

Um literal é um valor de dados que aparece diretamente em um programa. Os valores seguintes são todos literais:

12

1.2

"hello world"

'Hi' true false

/javascript/gi null

//

//

//

//

//

//

//

//

O número doze

O número um ponto dois

 

2.5 Pontos e vírgulas opcionais

PDF Criptografado

Capítulo 2

Estrutura léxica

25

arguments

Array

Boolean

Date decodeURI decodeURIComponent

encodeURI encodeURIComponent

Error eval

EvalError

Function

Infinity isFinite isNaN

JSON

Math

NaN

Number

Object parseFloat parseInt

RangeError

ReferenceError

RegExp

String

SyntaxError

TypeError undefined

URIError

Lembre-se de que as implementações de JavaScript podem definir outras variáveis e funções globais, sendo que cada incorporação de JavaScript específica (lado do cliente, lado do servidor, etc.) terá sua própria lista de propriedades globais. Consulte o objeto Window na Parte IV para ver uma lista das variáveis e funções globais definidas por JavaScript do lado do cliente.

2.5 Pontos e vírgulas opcionais

Assim como muitas linguagens de programação, JavaScript usa o ponto e vírgula (;) para separar instruções (consulte o Capítulo 5). Isso é importante para tornar claro o significado de seu código: sem um separador, o fim de uma instrução pode parecer ser o início da seguinte ou vice-versa.

 

3.1 Números

PDF Criptografado

30

Parte I

JavaScript básica

de alterar o texto de uma string existente. As diferenças entre valores mutáveis e imutáveis são exploradas mais a fundo na Seção 3.7.

JavaScript converte valores de um tipo para outro de forma livre. Se um programa espera uma string, por exemplo, e você fornece um número, ele converte o número em string automaticamente. Se você usa um valor não booleano onde é esperado um booleano, JavaScript converte adequadamente.

As regras de conversão de valor são explicadas na Seção 3.8. As regras de conversão de valor liberais de JavaScript afetam sua definição de igualdade, sendo que o operador de igualdade == realiza conversões de tipo conforme descrito na Seção 3.8.1.

As variáveis em JavaScript são não tipadas: você pode atribuir um valor de qualquer tipo a uma variável e, posteriormente, atribuir um valor de tipo diferente para a mesma variável. As variáveis são declaradas com a palavra-chave var. JavaScript utiliza escopo léxico. As variáveis declaradas fora de uma função são variáveis globais e são visíveis por toda parte em um programa JavaScript. As variáveis declaradas dentro de uma função têm escopo de função e são visíveis apenas para o código que aparece dentro dessa função. A declaração e o escopo de variáveis são abordados na Seção 3.9 e na Seção 3.10.

 

3.2 Texto

PDF Criptografado

Capítulo 3 Tipos, valores e variáveis

//

// later.toUTCString()

// later.toLocaleDateString() // later.toLocaleTimeString() // later.toISOString()

//

=> "Sexta-feira, 01 de janeiro de 2010, 17:10:30 GMT-0800

(PST)"

=> "Sábado, 02 de janeiro de 2010, 01:10:30 GMT"

=> "01/01/2010"

=> "05:10:30 PM"

=> "2010-01-02T01:10:30.000Z"; somente ES5

3.2 Texto

Uma string é uma sequência ordenada imutável de valores de 16 bits, cada um dos quais normalmente representa um caractere Unicode – as strings são um tipo de JavaScript usado para representar texto. O comprimento de uma string é o número de valores de 16 bits que ela contém. As strings (e seus arrays) de JavaScript utilizam indexação com base em zero: o primeiro valor de 16 bits está na posição 0, o segundo na posição 1 e assim por diante. A string vazia é a string de comprimento 0.

JavaScript não tem um tipo especial que represente um único elemento de uma string. Para representar um único valor de 16 bits, basta usar uma string que tenha comprimento 1.

 

3.3 Valores booleanos

PDF Criptografado

Capítulo 3 Tipos, valores e variáveis

39

Um valor booleano representa verdadeiro ou falso, ligado ou desligado, sim ou não. Só existem dois valores possíveis desse tipo. As palavras reservadas true e false são avaliadas nesses dois valores.

Geralmente, os valores booleanos resultam de comparações feitas nos programas JavaScript. Por exemplo: a == 4

Esse código faz um teste para ver se o valor da variável a é igual ao número 4. Se for, o resultado dessa comparação é o valor booleano true. Se a não é igual a 4, o resultado da comparação é false.

Os valores booleanos são comumente usados em estruturas de controle em JavaScript. Por exemplo, a instrução if/else de JavaScript executa uma ação se um valor booleano é true e outra ação se o valor é false. Normalmente, uma comparação que gera um valor booleano é combinada diretamente com a instrução que o utiliza. O resultado é o seguinte: if (a == 4) b = b + 1; else a = a + 1;

Esse código verifica se a é igual a 4. Se for, ele soma 1 a b; caso contrário, ele soma 1 a a. Conforme discutiremos na Seção 3.8, em JavaScript qualquer valor pode ser convertido em um valor booleano.

 

3.4 Null e undefined

PDF Criptografado

40

Parte I

JavaScript básica

No primeiro caso, o corpo da instrução if só vai ser executado se o não for null. O segundo caso é menos rigoroso: ele executa o corpo da instrução if somente se o não é false ou qualquer valor falso

(como null ou undefined). A instrução if apropriada para seu programa depende de quais valores você espera atribuir para o. Se você precisa diferenciar null de 0 e "", então deve utilizar uma comparação explícita.

Os valores booleanos têm um método toString() que pode ser usado para convertê-los nas strings

“true” ou “false”, mas não possuem qualquer outro método útil. Apesar da API trivial, existem três operadores booleanos importantes.

O operador && executa a operação booleana E. Ele é avaliado como um valor verdadeiro se, e somente se, seus dois operandos são verdadeiros; caso contrário, é avaliado como um valor falso. O operador || é a operação booleana OU: ele é avaliado como um valor verdadeiro se um ou outro (ou ambos) de seus operandos é verdadeiro e é avaliado como um valor falso se os dois operandos são falsos. Por fim, o operador unário ! executa a operação booleana NÃO: ele é avaliado como true se seu operando é falso e é avaliado como false se seu operando é verdadeiro. Por exemplo: if ((x == 0 && y == 0) || !(z == 0)) {

 

3.5 O objeto global

PDF Criptografado

Capítulo 3 Tipos, valores e variáveis

41

Você pode pensar em usar undefined para representar uma ausência de valor em nível de sistema, inesperada ou como um erro e null para representar ausência de valor em nível de programa, normal ou esperada. Se precisar atribuir um desses valores a uma variável ou propriedade ou passar um desses valores para uma função, null quase sempre é a escolha certa.

3.5 O objeto global

As seções anteriores explicaram os tipos primitivos e valores em JavaScript. Os tipos de objeto – objetos, arrays e funções – são abordados em seus próprios capítulos, posteriormente neste livro. Porém, existe um valor de objeto muito importante que precisamos abordar agora. O objeto global é um objeto normal de JavaScript que tem um objetivo muito importante: as propriedades desse objeto são os símbolos definidos globalmente que estão disponíveis para um programa JavaScript. Quando o interpretador JavaScript começa (ou quando um navegador Web carrega uma nova página), ele cria um novo objeto global e dá a ele um conjunto inicial de propriedades que define:

 

3.6 Objetos wrapper

PDF Criptografado

42

Parte I

JavaScript básica

Ao ser criado, o objeto global define todos os valores globais predefinidos de JavaScript. Mas esse objeto especial também contém globais definidos pelo programa. Se seu código declara uma variável global, essa variável é uma propriedade do objeto global. A Seção 3.10.2 explica isso com mais detalhes.

3.6 Objetos wrapper

Os objetos JavaScript são valores compostos: eles são um conjunto de propriedades ou valores nomeados. Ao usarmos a notação . fazemos referência ao valor de uma propriedade. Quando o valor de uma propriedade é uma função, a chamamos de método. Para chamar o método m de um objeto o, escrevemos o.m().

Também vimos que as strings têm propriedades e métodos: var s = "hello world!"; var word = s.substring(s.indexOf(" ")+1, s.length);

// Uma string

// Usa propriedades da string

Contudo, as strings não são objetos. Então, por que elas têm propriedades? Quando você tenta se referir a uma propriedade de uma string s, JavaScript converte o valor da string em um objeto como se estivesse chamando new String(s). Esse objeto herda (consulte a Seção 6.2.2) métodos da string e

 

3.7 Valores primitivos imutáveis e referências de objeto mutáveis

PDF Criptografado

Capítulo 3 Tipos, valores e variáveis

43

Note que é possível (mas quase nunca necessário ou útil) criar objetos wrapper explicitamente, chamando as construtoras String(), Number() ou Boolean(): var var var var

s

S

N

B

=

=

=

=

"test", n = 1, b = true; new String(s); new Number(n); new Boolean(b);

//

//

//

//

Uma string, um número e um valor booleano.

Um objeto String

Um objeto Number

Um objeto Boolean

JavaScript converte objetos wrapper no valor primitivo empacotado, quando necessário; portanto, os objetos S, N e B anteriores normalmente (mas nem sempre) se comportam exatamente como os valores s, n e b. O operador de igualdade == trata um valor e seu objeto wrapper como iguais, mas é possível diferenciá-los com o operador de igualdade restrito ===. O operador typeof também mostra a diferença entre um valor primitivo e seu objeto wrapper.

3.7 Valores primitivos imutáveis e referências de objeto mutáveis

 

3.8 Conversões de tipo

PDF Criptografado

44

Parte I

JavaScript básica

Objetos não são comparados por valor: dois objetos não são iguais mesmo que tenham as mesmas propriedades e valores. E dois arrays não são iguais mesmo que tenham os mesmos elementos na mesma ordem: var o o === var a a ===

= {x:1}, p = {x:1}; p

= [], b = []; b

//

//

//

//

Dois objetos com as mesmas propriedades

=> falso: objetos distintos nunca são iguais

Dois arrays vazios diferentes

=> falso: arrays diferentes nunca são iguais

Às vezes os objetos são chamados de tipos de referência para distingui-los dos tipos primitivos de

JavaScript. Usando essa terminologia, os valores de objeto são referências e dizemos que os objetos são comparados por referência: dois valores de objeto são iguais se, e somente se, eles se referem ao mesmo objeto básico. var a = []; var b = a; b[0] = 1; a[0] a === b

//

//

//

//

//

A variável a se refere a um array vazio.

 

3.9 Declaração de variável

PDF Criptografado

Capítulo 3 Tipos, valores e variáveis

51

3.9 Declaração de variável

Antes de utilizar uma variável em um programa JavaScript, você deve declará-la. As variáveis são declaradas com a palavra-chave var, como segue: var i; var sum;

Também é possível declarar várias variáveis com a mesma palavra-chave var: var i, sum;

E pode-se combinar a declaração da variável com sua inicialização: var message = "hello"; var i = 0, j = 0, k = 0;

Se não for especificado um valor inicial para uma variável com a instrução var, a variável será declarada, mas seu valor será undefined até que o código armazene um valor nela.

Note que a instrução var também pode aparecer como parte dos laços for e for/in (apresentados no

Capítulo 5), permitindo declarar a variável do laço sucintamente como parte da própria sintaxe do laço. Por exemplo: for(var i = 0; i < 10; i++) console.log(i); for(var i = 0, j=10; i < 10; i++,j--) console.log(i*j); for(var p in o) console.log(p);

 

3.10 Escopo de variável

PDF Criptografado

52

Parte I

JavaScript básica

3.10 Escopo de variável

O escopo de uma variável é a região do código-fonte de seu programa em que ela está definida. Uma variável global tem escopo global; ela está definida em toda parte de seu código JavaScript. Por outro lado, as variáveis declaradas dentro de uma função estão definidas somente dentro do corpo da função. Elas são variáveis locais e têm escopo local. Os parâmetros de função também contam como variáveis locais e estão definidos somente dentro do corpo da função.

Dentro do corpo de uma função, uma variável local tem precedência sobre uma variável global com o mesmo nome. Se você declara uma variável local ou um parâmetro de função com o mesmo nome de uma variável global, ela efetivamente oculta a variável global: var scope = "global"; function checkscope() { var scope = "local"; return scope;

} checkscope()

// Declara uma variável global

// Declara uma variável local com o mesmo nome

// Retorna o valor local, não o global

 

4.1 Expressões primárias

PDF Criptografado

Capítulo 4

Expressões e operadores

Uma expressão é uma frase de código JavaScript que um interpretador JavaScript pode avaliar para produzir um valor. Uma constante literalmente incorporada em seu programa é um tipo de expressão muito simples. Um nome de variável também é uma expressão simples, avaliada com o valor atribuído a essa variável. Expressões complexas são formadas a partir de expressões mais simples.

Uma expressão de acesso a array, por exemplo, consiste em uma expressão avaliada como um array, seguida de um colchete de abertura, uma expressão avaliada como um inteiro e um colchete de fechamento. Essa nova expressão mais complexa é avaliada com o valor armazenado no índice especificado do array especificado. Da mesma forma, uma expressão de chamada de função consiste em uma expressão avaliada como um objeto de função e zero ou mais expressões adicionais, utilizadas como argumentos da função.

A maneira mais comum de construir uma expressão complexa a partir de expressões mais simples é com um operador. Um operador combina os valores de seus operandos (normalmente, dois deles) de algum modo e é avaliada como um novo valor. O operador de multiplicação * é um exemplo simples. A expressão x * y é avaliada como o produto dos valores das expressões x e y.

 

Carregar mais


Detalhes do Produto

Livro Impresso
Book
Capítulos

Formato
PDF
Criptografado
Sim
SKU
BPP0000271139
ISBN
9788565837484
Tamanho do arquivo
9,1 MB
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
Formato
PDF
Criptografado
Sim
Impressão
Desabilitada
Cópia
Desabilitada
Vocalização de texto
Não
SKU
Em metadados
ISBN
Em metadados
Tamanho do arquivo
Em metadados