JavaScript é uma linguagem de script multiplataforma, orientada a objetos. É uma linguagem pequena e leve. Dentro de um ambiente host (por exemplo, um navegador da web), JavaScript pode ser conectado aos objetos de seu ambiente para fornecer controle programático sobre eles.
JavaScript contém uma biblioteca padrão de objetos, como Array, Date e Math, e um conjunto central de elementos de linguagem, como operadores, estruturas de controle e instruções. O JavaScript central pode ser estendido para uma variedade de propósitos, complementando-o com objetos adicionais; por exemplo:
- O JavaScript do lado do cliente estende a linguagem principal fornecendo objetos para controlar um navegador e seu Document Object Model (DOM). Por exemplo, extensões do lado do cliente permitem que um aplicativo coloque elementos em um formulário HTML e responda a eventos do usuário, como cliques do mouse, entrada de formulário e navegação de página.
- O JavaScript do lado do servidor estende a linguagem principal fornecendo objetos relevantes para executar o JavaScript em um servidor. Por exemplo, extensões do lado do servidor permitem que um aplicativo se comunique com um banco de dados, forneça continuidade de informações de uma invocação para outra do aplicativo ou execute manipulações de arquivo em um servidor.
Este guia pressupõe que você tenha os seguintes conhecimentos básicos:
- Uma compreensão geral da Internet e da World Wide Web (WWW).
- Bom conhecimento prático de HyperText Markup Language (HTML).
- Alguma experiência em programação. Se você é novo em programação, tente um dos tutoriais vinculados na página principal sobre JavaScript.
JavaScript e Java são semelhantes em alguns aspectos, mas fundamentalmente diferentes em outros. A linguagem JavaScript se assemelha a Java, mas não tem a tipagem estática e a verificação de tipo forte de Java. JavaScript segue a maioria da sintaxe de expressão Java, convenções de nomenclatura e construções básicas de fluxo de controle, que foi a razão pela qual foi renomeado de LiveScript para JavaScript.
Em contraste com o sistema de classes de tempo de compilação do Java construído por declarações, o JavaScript suporta um sistema de tempo de execução baseado em um pequeno número de tipos de dados representando valores numéricos, booleanos e de string. O JavaScript tem um modelo de objeto baseado em protótipo em vez do modelo de objeto baseado em classe mais comum. O modelo baseado em protótipo fornece herança dinâmica; isto é, o que é herdado pode variar para objetos individuais. O JavaScript também suporta funções sem quaisquer requisitos declarativos especiais. As funções podem ser propriedades de objetos, executando como métodos fracamente tipados.
JavaScript é uma linguagem muito livre comparada a Java. Você não precisa declarar todas as variáveis, classes e métodos. Você não precisa se preocupar se os métodos são públicos, privados ou protegidos, e você não precisa implementar interfaces. Variáveis, parâmetros e tipos de retorno de função não são explicitamente tipados.
Para começar a escrever JavaScript, abra o Scratchpad e escreva seu primeiro código JavaScript "Hello world":
function greetMe(yourName) { alert("Hello " + yourName); }
greetMe("World");
Selecione o código no bloco e pressione Ctrl+R para vê-lo se desenrolar no seu navegador!
Você usa variáveis como nomes simbólicos para valores em seu aplicativo. Os nomes de variáveis, chamados identificadores, obedecem a certas regras.
Um identificador JavaScript deve começar com uma letra, sublinhado (_) ou cifrão ($); caracteres subsequentes também podem ser dígitos (0-9). Como o JavaScript diferencia maiúsculas de minúsculas, as letras incluem os caracteres de "A" a "Z" (maiúsculas) e os caracteres de "a" a "z" (minúsculas).
Você pode usar ISO 8859-1 ou letras Unicode como å e ü em identificadores. Você também pode usar as sequências de escape Unicode como caracteres em identificadores. Alguns exemplos de nomes legais são Number_hits, temp99 e _name.
Você pode declarar uma variável de três maneiras:
Com a palavra-chave var. Por exemplo,
var x = 42.
esta sintaxe pode ser usada para declarar variáveis locais e globais.
Simplesmente atribuindo um valor a ele. Por exemplo,
x = 42.
This sempre declara uma variável global. Ele gera um aviso JavaScript estrito. Você não deve usar esta variante.
Com a palavra-chave let. Por exemplo,
let y = 13.
Esta sintaxe pode ser usada para declarar uma variável local de escopo de bloco. Veja Escopo de variável abaixo.
Quando você declara uma variável fora de qualquer função, ela é chamada de variável global, porque ela está disponível para qualquer outro código no documento atual. Quando você declara uma variável dentro de uma função, ela é chamada de variável local, porque ela está disponível somente dentro daquela função.
O JavaScript antes do ECMAScript 2015 não tem escopo de declaração de bloco; em vez disso, uma variável declarada dentro de um bloco é local para a função (ou escopo global) em que o bloco reside. Por exemplo, o código a seguir registrará 5, porque o escopo de x é a função (ou contexto global) dentro do qual x é declarado, não o bloco, que neste caso é uma declaração if.
if (true) { var x = 5; } console.log(x); // 5
Esse comportamento muda ao usar a declaração let introduzida no ECMAScript 2015.
if (true) { let y = 5; } console.log(y); // ReferenceError: y is
not defined
Variáveis globais são, na verdade, propriedades do objeto global. Em páginas da web, o objeto global é window, então você pode definir e acessar variáveis globais usando a sintaxe window.variable.
Consequentemente, você pode acessar variáveis globais declaradas em uma janela ou frame de outra janela ou frame especificando o nome da janela ou frame. Por exemplo, se uma variável chamada phoneNumber for declarada em um documento, você pode se referir a essa variável de um iframe como parent.phoneNumber.
Você pode criar uma constante nomeada somente leitura com a palavra-chave const. A sintaxe de um identificador de constante é a mesma de um identificador de variável: ele deve começar com uma letra, sublinhado ou cifrão e pode conter caracteres alfabéticos, numéricos ou sublinhados.
const PI = 3.14;
Uma constante não pode mudar o valor por meio de atribuição ou ser declarada novamente enquanto o script estiver em execução. Ela precisa ser inicializada para um valor.
As regras de escopo para constantes são as mesmas para variáveis de escopo de bloco let. Se a palavra-chave const for omitida, o identificador é assumido como representando uma variável.
Você não pode declarar uma constante com o mesmo nome de uma função ou variável no mesmo escopo. Por exemplo:
// THIS WILL CAUSE AN ERROR function f() {}; const f = 5;
// THIS WILL CAUSE AN ERROR ALSO function f() { const g = 5; var g;
//statements }
Entretanto, os atributos do objeto não são protegidos, então a instrução a seguir é executada sem problemas.
const MY_OBJECT = {"key": "value"}; MY_OBJECT.key ="otherValue";
O mais recente padrão ECMAScript define sete tipos de dados:
- Seis tipos de dados que são primitivos:
- Booleano. verdadeiro e falso.
- null. Uma palavra-chave especial que denota um valor nulo. Como JavaScript diferencia maiúsculas de minúsculas, null não é o mesmo que Null, NULL ou qualquer outra variante.
- undefined. Uma propriedade de nível superior cujo valor é undefined.
- Número. 42 ou 3,14159.
- Corda. "Olá"
- Símbolo (novo no ECMAScript 2015). Um tipo de dado cujas instâncias são únicas e imutáveis.
- e objeto
Embora esses tipos de dados sejam uma quantidade relativamente pequena, eles permitem que você execute funções úteis com seus aplicativos. Objetos e funções são os outros elementos fundamentais na linguagem. Você pode pensar em objetos como contêineres nomeados para valores, e funções como procedimentos que seu aplicativo pode executar.
Use a instrução if para executar uma instrução se uma condição lógica for verdadeira. Use a cláusula else opcional para executar uma instrução se a condição for falsa. Uma instrução if tem a seguinte aparência:
if (condition) { statement_1; } else { statement_2; }
condition pode ser qualquer expressão que seja avaliada como true ou false. Veja Boolean para uma explicação do que é avaliado como true e false. Se condition for avaliada como true, statement_1 é executada; caso contrário, statement_2 é executada. statement_1 e statement_2 podem ser qualquer instrução, incluindo outras instruções if aninhadas.
Você também pode compor as instruções usando else if para ter várias condições testadas em sequência, como segue:
if (condition_1) { statement_1; } else if (condition_2) {
statement_2; } else if (condition_n) { statement_n; } else {
statement_last; }
No caso de múltiplas condições, somente a primeira condição lógica que for avaliada como verdadeira será executada. Para executar múltiplas instruções, agrupe-as dentro de uma instrução de bloco ({ ... }). Em geral, é uma boa prática sempre usar instruções de bloco, especialmente ao aninhar instruções if:
if (condition) {
statement_1_runs_if_condition_is_true;
statement_2_runs_if_condition_is_true; } else {
statement_3_runs_if_condition_is_false;
statement_4_runs_if_condition_is_false; }
É aconselhável não usar atribuições simples em uma expressão condicional, porque a atribuição pode ser confundida com igualdade ao olhar o código. Por exemplo, não use o seguinte código:
if (x = y) { /* statements here */ }
Se você precisar usar uma atribuição em uma expressão condicional, uma prática comum é colocar parênteses adicionais ao redor da atribuição. Por exemplo:
if ((x = y)) { /* statements here */ }
Uma instrução while executa suas instruções enquanto uma condição especificada for avaliada como verdadeira. Uma instrução while tem a seguinte aparência:
while (condition) statement
Se a condição se tornar falsa, a instrução dentro do loop para de ser executada e o controle passa para a instrução seguinte ao loop.
O teste de condição ocorre antes da execução da instrução no loop. Se a condição retornar true, a instrução é executada e a condição é testada novamente. Se a condição retornar false, a execução para e o controle é passado para a instrução seguinte ao while.
Para executar várias instruções, use uma instrução em bloco ({ ... }) para agrupar essas instruções.
Exemplo:
O seguinte loop while itera enquanto n for menor que três:
var n = 0; var x = 0; while (n < 3) { n++; x += n; }
A cada iteração, o loop incrementa n e adiciona esse valor a x. Portanto, x e n assumem os seguintes valores:
- Após a primeira passagem: n = 1 e x = 1
- Após a segunda passagem: n = 2 e x = 3
- Após a terceira passagem: n = 3 e x = 6
Após concluir a terceira passagem, a condição n < 3 não é mais verdadeira, então o loop termina.
Uma definição de função (também chamada de declaração de função ou instrução de função) consiste na palavra-chave function, seguida por:
- O nome da função.
- Uma lista de argumentos para a função, entre parênteses e separados por vírgulas.
- As instruções JavaScript que definem a função, entre chaves, { }.
Por exemplo, o código a seguir define uma função simples chamada square:
function square(number) { return number * number; }
A função square recebe um argumento, chamado number. A função consiste em uma declaração que diz para retornar o argumento da função (isto é, number) multiplicado por ele mesmo. A declaração return especifica o valor retornado pela função.
return number * number;
Parâmetros primitivos (como um número) são passados para funções por valor; o valor é passado para a função, mas se a função altera o valor do parâmetro, essa alteração não é refletida globalmente ou na função de chamada.
Toda a documentação nesta página foi retirada do MDN