A estrutura lexical de uma linguagem de programação é um conjunto básico de regras usadas para descrever como você escreve esse idioma. Como base da sintaxe, ele especifica como são os nomes das variáveis, como escrever comentários e como distinguir entre declarações. Esta seção usa um espaço muito curto para introduzir a estrutura lexical do JavaScript.
1. Conjunto de caracteres
O programa JavaScript está escrito em conjuntos de caracteres Unicode, um superconjunto de ASCII e Latin-1 e suporta quase todos os idiomas da região. O ECMAScript3 requer que a implementação do JavaScript deve suportar versões Unicode2, 1 e subsequente, enquanto o ECMAScript5 exige que a implementação do JavaScript deve suportar o Unicode3 e as versões subsequentes.
eu. maiúsculas e minúsculas
O JavaScript é uma linguagem sensível ao caso, ou seja, palavras-chave, variáveis, nomes de funções e todos os caracteres de expressão devem ser consistentemente revestidos. Por exemplo, a palavra -chave deve ser escrita como enquanto não pode ser escrita como ou enquanto.
Mas deve -se notar que o HTML não é sensível ao caso (embora o XHTML seja diferente) e é fácil de se confundir porque está intimamente relacionado ao JavaScript do cliente. Por exemplo, no evento de processamento definido pelo HTML, o atributo OnClick pode ser escrito como OnClick, mas no JavaScript, ele pode ser escrito como OnClick.
II Espaços, quebras de linha e controladores de formato
O JavaScript ignora os espaços entre os tokens no programa. Na maioria dos casos, o JavaScript também ignora quebras de linha. Como os espaços e as quebras de linha podem ser usados à vontade no código, o recuo limpo e consistente pode ser usado ao mesmo tempo para formar um estilo de codificação unificado, melhorando a legibilidade do código.
JavaScript, além de identificar caracteres espaciais (/U0020). O JavaScript também exibe os seguintes caracteres que indicam espaços: caractere horizontal da guia (/u0009), caractere vertical da guia (/u000b), caractere de renovação de página (/u000c), caractere de espaço em branco não interrompido (/u00a0), etiqueta Endian (/ufeff) e caracteres em todas as categorias ZS em unicode. O JavaScript reconhece os seguintes caracteres como caracteres finais: quebra de linha (/u000a), símbolo de retorno de carruagem (/u000d), separador de linha (/u2028) e separador de segmento (/u2029). O caractere de retorno do carro e o caractere de quebra de linha são analisados em um caractere final de linha única.
O formato Unicode controla os caracteres (classe CF), como "Write Marks da direita para a esquerda" (/U200F) e "Escreva marcas da esquerda para a direita" (/U200E), controla a exibição visual do texto. This is crucial for the correct display of some non-English texts, which can be used in javascript comments, string direct quantities and regular expression direct quantities, but cannot be used in identifiers (e.g. variable names), but there is an exception to zero-width connector (/u200D) and zero-width non-connector (/uFEFF) that can appear in identifiers but cannot be used as hand characters. Também é mencionado acima que o caractere de controle de formato de marcação de pedidos de bytes (/ufeff) é tratado como um espaço.
iii.uNicode Escape Sequência
Em algum hardware e software de computador, o conjunto completo de caracteres Unicode não pode ser exibido ou inserido. Para apoiar programadores usando a tecnologia antiga, o JavaScript define uma sequência especial que usa 6 caracteres ASCII para representar qualquer código interno Unicode de 16 bits. Essas seqüências de escape unicode são prefixadas por /u, seguidas por ratos hexadecimais (indicados com números e maiúsculas e letras minúsculas AF). Essa escrita de escape unicode pode ser usada em quantidades diretas de string javascript, expressões regulares e identificadores (exceto palavras -chave). Por exemplo, a fuga unicode do personagem é é escrita como /u00E9, e as duas strings de javascript a seguir são exatamente iguais.
"Café" === "Caf/u00E9" => true
A escrita do Unicode Escape pode aparecer nos comentários, mas como o JavaScript ignora comentários, eles são apenas tratados como caracteres ASCII no contexto e não serão seguidos por caracteres Unicode.
IIII Padronização
O Unicode permite a codificação do mesmo caractere usando vários métodos. Por exemplo, o caractere é pode usar o caractere unicode /u00E9, ou o caractere ASCII comum e pode ser usado para seguir um símbolo de tom /u0301. Em um editor de texto, os resultados exibidos por essas duas codificações são exatamente iguais, mas suas representações de codificação binária são diferentes e não são iguais em computadores. O padrão Unicode define um formato de código preferido para caracteres de índice e fornece um método de processamento padronizado para converter o texto em um formato padrão adequado para comparação e não padronizará mais outras representações, strings ou expressões regulares.
2. Comentários
O JavaScript suporta dois métodos de comentários. O texto após "//" no final da linha será ignorado pelo JavaScript como comentários.
Além disso, o texto entre / * e * / também é usado como comentários. Esse tipo de comentário pode ser escrito entre linhas, mas não há comentários aninhados.
// Comentário de linha única
/*
*
*
*
*/
3. Quantidade direta
A chamada quantidade direta (literal) é o valor de dados diretamente usado no programa. A quantidade direta está listada abaixo.
A cópia do código é a seguinte:
12 // números
1.2 // decimal
"HllO World" // Texto da string
'oi' // outra string
verdadeiro // booleano
falso // booleano
/javascript /gi // Expressão regular Quantidade direta (usada como correspondência de padrões)
nulo // vazio
O capítulo 3 explicará em detalhes a quantidade direta de números e cordas. A quantidade direta de expressões regulares será explicada no capítulo 10. Mais expressões de bem -estar podem ser escritas diretamente como matrizes ou objetos.
{x: 1, y: 2} // objeto
[1,2,3,4,5] // Array
4. Identificadores e palavras reservadas
Um identificador é um nome. No JavaScript, os identificadores são usados para nomear variáveis e funções, ou para marcar a posição de salto em determinadas instruções de loop no código JavaScript. O identificador JavaScript deve estar em letras. O sublinhado, ou sinal de dólar começa. Os caracteres subsequentes podem ser letras. número. Sinal de sublinhamento ou dólar (os números não podem aparecer como iniciais, o JavaScript pode distinguir facilmente os identificadores dos números), e os seguintes são identificadores legais
A cópia do código é a seguinte:
my_variable_name
B13
_fictício
$ str
Para portabilidade e facilidade de redação, geralmente usamos apenas letras e números ASCII para escrever identificadores. Então deve -se notar que o JavaScript permite letras e números em todo o conjunto de caracteres Unicode no identificador (da tecnologia ao ECMAScript permite que a classe MN, a classe MC e a classe P do mecanismo de caracteres unicode apareça após o primeiro caractere do identificador). Portanto, os programadores podem usar idiomas não ingleses ou símbolos matemáticos para escrever identificadores.
A cópia do código é a seguinte:
var sá = true;
var π = 3,14;
O JavaScript retira alguns identificadores como palavras -chave, para que os nomes não possam mais usar essas palavras -chave como identificadores no programa.
A cópia do código é a seguinte:
quebrar
caso
pegar
Continue
padrão
Exclua excluir
fazer
outro
Finalmente
para
função
se
em
Instância de
novo
Retornar
trocar
Esse
lançar
tentar
typeof
var
vazio
Enquanto
com
Javascript Palavras reservadas
Classe Const Enum Export
Exportar estende a importação super
Além disso, essas palavras -chave são legais no JavaScript normal, mas são palavras reservadas no modo rigoroso
implementos permitem que o pacote de interface de rendimento público privado
estática protegida
No mesmo modo rigoroso, os seguintes identificadores são estritamente restritos, mas nomes de variáveis, nomes de parâmetros e nomes de funções não podem ser usados.
Argumentos Eval
A implementação específica do JavaScript pode definir variáveis e funções globais exclusivas. Cada servidor de ambiente de execução JavaScript específico (cliente), etc., possui sua própria lista de atributos globais, que precisa ser lembrada. (Objeto de janela para entender a lista de variáveis e funções globais definidas no cliente JavaScript)
5. Semicolon opcional
Como muitas linguagens de programação, o JavaScript usa o semicolons (;) para separar declarações. Isso é muito importante para melhorar a legibilidade e a limpeza do código. O fim de uma declaração sem um separador se torna o começo da próxima declaração e vice -versa.
No JavaScript, cada declaração ocupa uma linha e o ponto de vírgula entre as declarações geralmente pode ser omitido (o ponto de vírgula antes que os aparelhos do "}" no final do programa também possam ser omitidos). Muitos programadores JavaScript (incluindo os exemplos de código deste livro) usam os semicolons para marcar claramente o fim de uma declaração, mesmo quando os semicolons não são completamente necessários. Outro estilo é omitir os semicolons quando eles podem ser omitidos e usar apenas semicolons quando precisam ser usados. Independentemente do estilo de programação, há vários detalhes para prestar atenção sobre o JavaScript.
O código a seguir, o primeiro semicolon pode ser omitido
a = 3;
b = 4;
No entanto, se escrito no formato a seguir, o primeiro ponto -vírgula não pode ser omitido.
a = 3; b = 4;
Deve -se notar que o JavaScript não preenche os semicolons em todas as linhas iniciais: o JavaScript preencherá os semicolons somente quando o código não for analisado normalmente sem semicolons. Em outras palavras (semelhante às duas exceções no código a seguir), se a instrução atual e os caracteres subsequentes não espaciais não puderem ser analisados como um todo, o JavaScript preencherá os semicolons no final da instrução atual. Veja o seguinte código
var a
um
=
3
console.log (a)
JavaScript o analisa como
var a; a = 3; console.log (a);
O JavaScript adiciona um semicolon à primeira linha. Sem um semicolon, o JavaScript não pode analisar var AA no código. O segundo A pode ser usado como uma declaração "A", mas o JavaScript não preenche o semicolon no final da segunda linha. Porque pode ser analisado com o conteúdo da terceira linha para "a = 3;" .
As regras de separação de algumas declarações levarão a algumas situações inesperadas. Esse código de quebra é dividido em duas linhas, o que parece ser duas declarações independentes.
var y = x + f
(a+b) .ToString ()
Os colchetes da segunda linha formam uma chamada de função com o F na primeira linha. JavaScript considerará este código como
var y = x+f (a+b) .ToString ();
Obviamente, a intenção original do código não é assim. Para permitir que o código acima seja analisado em duas declarações diferentes, você deve preencher manualmente o semicolon da tela do comportamento.
De um modo geral, se uma declaração começar com ([ / + -, é muito provável que seja analisado com a declaração anterior. As declarações que começam com / + - não são muito comuns, mas declarações começando com (são muito comuns.
Se a instrução atual e a próxima instrução LINE não puderem ser mesclados e analisados. O JavaScript preenche o semicolon após a primeira linha, que é uma regra comum, mas possui duas colunas do lado de fora. A primeira exceção envolve o retorno, Birak, ele continua a declaração se essas três palavras -chave forem seguidas por uma quebra de linha. O JavaScript preencherá os semicolons na nova linha. Por exemplo
Por exemplo
Retornar
verdadeiro;
E JavaScript analisado em
retorno; ture;
O significado original do código é
retornar a verdade;
Em outras palavras, não pode haver quebras de linha entre as expressões subsequentes com retorno, quebra e contuína. Se uma quebra de linha for adicionada, o programa só poderá relatar um erro em circunstâncias especiais. Além disso, a depuração do programa é inconveniente.
O segundo exemplo é quando se trata do operador ++ - esses símbolos de expressão podem representar o prefixo e o sufixo da expressão do identificador. Se for seguido pela expressão, se for usada como expressão do sufixo. Ele e a expressão devem ser considerados uma linha. Caso contrário, o semicolon será preenchido no final da linha.
A cópia do código é a seguinte:
x
++
AA
O código acima é analisado como
A cópia do código é a seguinte:
x;
++ y