Introdução ao JavaScript

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?

Uma unidade de código que resulta em um valor.
Um grupo de declarações e declarações.
Um comentário que explica o que o código está fazendo.

O JavaScript diferencia maiúsculas de minúsculas.

Falso
Verdadeiro