Apesar do nome, JavaScript só se relaciona com Java no sentido em que ambos compartilham alguns semelhanças sintáticas. Em seu desenvolvimento inicial, a sintaxe do JavaScript era vagamente inspirada na sintaxe do Java e chamada de "LiveScript" quando ele pela primeira vez lançado em uma versão beta do Netscape Navigator em 1995, ambos alinhados com alguns das outras ofertas nomeadas do Netscape e como uma referência ao fato de que ele é executado "ao vivo" no navegador. A Microsoft lançou sua própria implementação de JavaScript, "JScript", pouco tempo depois, com o Internet Explorer 3.0.
O Netscape enviou esse trabalho inicial para Ecma International, uma organização que desenvolve e publica padrões técnicos, para formalizar e detalhar como isso linguagem de script deve ser entendida por outros navegadores. Em 1997, a Ecma Lançamento internacional do ECMA-262, padronizando a primeira versão de um scripting chamada ECMAScript. ECMAScript é o padrão que informa a criação de linguagens de script mais específicas. Por exemplo, trabalho posterior da Microsoft no o já extinto JScript, o Floodlight da Adobe e o próprio JavaScript.
Essa distinção é importante ao discutir aspectos e características específicos JavaScript. "ES5" refere-se à primeira versão principal "com controle de versão" do padrão ECMAScript em 2009, após anos de desenvolvimento gradual. "ES6" (ES2015) é uma abreviação dos padrões definidos pela sexta edição do ECMAScript, lançado em 2015. Depois do ES6, novas edições do ECMAScript padrão foram lançados todos os anos, com as alterações e adições de cada edição referido por ano como "ES2016" ou "ES2017".
Regras básicas
Ao contrário das linguagens compiladas, o JavaScript não é traduzido do código escrito por uma pessoa em um formato que o navegador possa entender. Um script é enviado ao navegador junto com recursos como marcações, imagens e folhas de estilo, o navegador a interpreta da mesma forma que foi escrita: como uma sequência legível de caracteres Unicode, analisado da esquerda para a direita e de cima para baixo.
Quando um intérprete de JavaScript recebe um script, ele primeiro executa análise léxica, analisar a longa sequência de caracteres que compõem um script; e convertendo-os nos seguintes elementos de entrada discretos:
- Tokens
- Caracteres de controle de formato
- Terminadores de linha
- Comentários
- Espaços em branco (quase sempre significa tabulações e espaços).
Os resultados de um script não persistem depois de recarregar ou sair da página atual, a menos que você inclua instruções explícitas para fazer o contrário em o script.
De modo geral, os aplicativos JavaScript são compostos de declarações e expressions.
Instruções
Uma instrução é uma unidade de instrução composta por uma ou mais linhas de código
representam uma ação. Por exemplo, use a instrução a seguir para atribuir
um valor para uma variável chamada myVariable
:
let myVariable = 4;
myVariable;
> 4
Para serem interpretadas corretamente, as instruções devem terminar em ponto e vírgula. No entanto, o ponto e vírgula nem sempre é necessário ao escrever JavaScript. Um atributo chamado A inserção automática de ponto e vírgula permite que uma linha quebra após uma instrução completa ser tratada como ponto e vírgula se um caractere ausente ponto e vírgula causaria um erro.
O ASI é correção de erros, não um aspecto permissivo do próprio JavaScript. Devido ao confiar demais nessa correção de erro pode levar à ambiguidade que prejudica você ainda deve terminar manualmente cada instrução com ponto e vírgula.
Instruções de bloqueio
Uma instrução de bloco agrupa qualquer número de instruções e declarações dentro de um par
de chaves ({}
). Ele permite combinar instruções em locais onde JavaScript
espera apenas um.
Você verá as instruções de bloqueio com mais frequência ao lado
instruções de fluxo de controle,
como if
:
if ( x === 2 ) {
//some behavior;
}
Expressões
Uma expressão é uma unidade de código que resulta em um valor e, portanto, pode ser
usado onde quer que um valor seja esperado. 2 + 2
é uma expressão que resulta na
valor 4
:
2 + 2;
> 4
O "operador de agrupamento", um par correspondente de parênteses, é usado para agrupar partes de uma expressão para garantir que uma parte dela seja são avaliadas como uma única unidade. Por exemplo, é possível usar um operador de agrupamento para substituir a ordem matemática das operações, ou para melhorar a legibilidade do código:
2 + 2 * 4;
> 10
( 2 + 2 ) * 4;
> 16
let myVariable = ( 2 + 2 );
myVariable;
> 4
Digitação fraca
JavaScript é uma linguagem de tipo fraca, o que significa que um valor de dados não precisa explicitamente marcado como um tipo de dado específico. Ao contrário de uma linguagem fortemente tipada, JavaScript pode inferir o tipo pretendido de contexto de um valor e converter o valor para esse tipo. Esse processo é chamado coerção de tipo.
Por exemplo, se você adicionar um número a um valor de string em um idioma fortemente tipado, como Python, o resultado será um erro:
>>> "1" + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
Em vez de retornar um erro, o JavaScript converte o valor numérico em uma string e concatena os dois valores, o comportamento mais provável ao adicionar qualquer valor em uma string:
"1" + 1;
> "11"
Os tipos de dados também podem ser explicitamente forçados. O exemplo a seguir força a
um valor numérico 100
como um valor de string "100"
usando o JavaScript
Método toString
:
let myVariable = 100;
typeof myVariable;
> "number"
myVariable = myVariable.toString();
> "100"
typeof myVariable;
> "string"
Diferenciação entre maiúsculas e minúsculas
Ao contrário do HTML e da maior parte do CSS, o JavaScript diferencia maiúsculas de minúsculas. Isso significa que você sempre deve capitalizar tudo de forma consistente, desde propriedades e métodos integrados à linguagem para os identificadores definidos você mesmo.
console.log( "Log this." );
> Log this.
console.Log( "Log this too." );
> Uncaught TypeError: console.Log is not a function
const myVariable = 2;
myvariable;
> Uncaught ReferenceError: myvariable is not defined
myVariable;
> 2
Espaço em branco
O JavaScript não diferencia espaços em branco. Isso significa que o intérprete ignora quantidade e tipo (tabulações ou espaços) do espaço em branco usado.
console.log( "Log this" );console.log("Log this too");
> "Log this."
> "Log this too."
No entanto, a presença de espaços em branco pode ser significativa como um separador entre tokens léxicos:
let x;
[tokens: [let]
[x]
]
letx;
> Uncaught ReferenceError: letx is not defined
[tokens: [letx]
]
Onde o espaço em branco é usado para separar tokens léxicos significativos, o analisador ignora a quantidade e o tipo de espaço em branco:
let x = 2;
[tokens: [let]
[x]
[=]
[2]
]
O mesmo acontece com as quebras de linha, embora haja casos em que as quebras de linha causar problemas ao encerrar prematuramente uma instrução):
let x
=
2;
[tokens: [let]
[x]
[=]
[2]
]
Estilisticamente, alguns tipos de afirmações frequentemente ocupam uma única linha:
let x = 1;
let y = 2;
Algumas instruções costumam usar várias linhas:
if ( x == 2 ) {
//some behavior;
}
No entanto, essas convenções são apenas para facilitar a leitura. JavaScript interpreta os exemplos anteriores da mesma maneira que:
let x=1;let y=2;
if(x==2){}
Por isso, um processo automatizado que remove espaços em branco não essenciais dos arquivos de script para reduzir o tamanho da transferência é uma etapa comum na preparação de JavaScript para um ambiente de produção, além de diversas outras otimizações.
O uso de caracteres de espaço em branco em JavaScript é, em grande parte, uma questão do autor e preferências do mantenedor. Projetos JavaScript com vários desenvolvedores código de contribuição geralmente sugerem ou impõem certas convenções de espaço em branco para garantem uma formatação consistente do código, por exemplo, o uso de tabulações ou espaços para recuar instruções aninhadas:
let myVariable = 10;
if ( typeof myVariable === "number" ) {
console.log( "This variable is a number." );
if( myVariable > 5 ) {
console.log( "This variable is greater than five." );
}
}
> "This variable is a number."
> "This variable is greater than five."
Teste seu conhecimento
O que é uma expressão?
O JavaScript diferencia maiúsculas de minúsculas.