Somente antes}, após uma ou mais quebras de linha, e o final da entrada do programa é inserido
Ou seja, você só pode omitir os semicolons onde uma linha, um bloco de código e uma parte do programa termina.
Isto é, você pode escrever o seguinte código
A cópia do código é a seguinte:
Função quadrada (x) {
var n = +x
retornar n * n
}
Mas não pode ser escrito como o código a seguir, por isso relatará um erro
A cópia do código é a seguinte:
Área de função (r) {r = +r retorna math.pi*r*r} // erro
Insira apenas se as marcas de entrada subsequentes não puderem ser analisadas
Em outras palavras, a inserção de semicolon é um mecanismo de correção de erros. Leia o código e fale
A cópia do código é a seguinte:
a = b
(f ())
// pode analisar corretamente uma declaração separada com o preço unitário da seguinte declaração.
a = b (f ())
a = b
f ()
// analisado em duas declarações independentes
a = bf (); // a análise está incorreta
Portanto, você deve prestar atenção ao início da próxima declaração para determinar se pode omitir legalmente o ponto de vírgula.
(, [, +, -e /, é melhor não omitir o ponto e vírgula na frente dele.
Dê um exemplo para ilustrar
A cópia do código é a seguinte:
a = b
['r', 'g', 'b']. foreach (function (key) {
console.log (chave);
});
Você pensou originalmente que não houve erro, mas o analisador analisou a seguinte declaração
A cópia do código é a seguinte:
a = b ['r', 'g', 'b']. foreach (function (key) {
console.log (chave);
});
Como a segunda frase começa com [, o analisador não inserirá automaticamente um ponto e vírgula após a primeira declaração, por isso é analisado como mostrado acima. B ['B']. Para cada um errado ao analisar a equação acima?
Portanto, se as declarações que começam com os cinco caracteres ([, +, -e / são melhores para não omitir o ponto e vírgula antes dele.
Se você deseja omitir o semicolon, um programador experiente seguirá a instrução para garantir que o analisador analise corretamente. Como mostrado abaixo
A cópia do código é a seguinte:
a = b
var x // Uma declaração de declaração é adicionada especialmente aqui para garantir que A = B não seja analisado com (f ())
(f ())
Portanto, se você precisar omitir um ponto de vírgula, deve verificar se a marca de início da próxima linha é os cinco caracteres acima, fazendo com que o analisador desative a inserção automática de semicolons, ou também pode prefixar os cinco caracteres ([, +, -e /
Omitir semicolons causa problemas de conexão de script
A cópia do código é a seguinte:
//file1.js
(function () {
// ...
}) ()
//file2.js
(function () {
// ...
}) ()
Quando os dois arquivos acima estiverem conectados, eles serão analisados da seguinte forma
A cópia do código é a seguinte:
(function () {
// ...
}) () (function () {
// ...
}) ()
Portanto, a omitir os semicolons não apenas exige que você tenha cuidado não apenas com a próxima etiqueta do arquivo atual, mas também qualquer tag que possa aparecer após a instrução após a conexão do script.
Para evitar erros de análise de analisador, você pode prefixar um semicolon extra em cada arquivo para proteger o script contra conexões descuidadas. Se a instrução inicial do arquivo for alterada com o caractere frágil acima, você deverá adicionar um prefixo semicolon adicional.
Geração de restrição de sintaxe JavaScript
Produção de restrição de sintaxe JavaScript: Não são permitidas quebras de linha entre dois caracteres.
Dê um exemplo:
A cópia do código é a seguinte:
Retornar
{};
O código acima é analisado em
A cópia do código é a seguinte:
retornar;
{}
;
As regras de inserção de semicolon para operações de auto-aumento e autodenagem
A cópia do código é a seguinte:
um
++
b
Pense sobre o que o código acima será analisado? Vamos dizer a resposta, porque o operador de automóveis pode ser usado como um operador predefinido e um operador pós -conjunto, mas o operador pós -conjunto não pode aparecer antes da quebra da linha, para que o código acima seja analisado em
A cópia do código é a seguinte:
um;
++ b;
O semicolon não será automaticamente inserido como um separador na cabeça da instrução FOR LOOP vazia.
A cópia do código é a seguinte:
para (var i = 0, total = 1
i <comprimento
i ++) {
total*= i;
}
Códigos como os acima terão erros de análise.
No tempo, o corpo do loop vazio também precisa ser exibido semicolons, caso contrário, ele também levará a erros de análise.
A cópia do código é a seguinte:
function mytest () {
Enquanto (verdadeiro)
}
Deve ser escrito o seguinte para evitar erros
A cópia do código é a seguinte:
function mytest () {
enquanto (verdadeiro);
}
Vamos resumir
1. Deduce semicolons apenas antes da tag}, no final de uma linha e no final do programa
2. Deduce semicolons apenas quando a marca seguinte não pode ser analisada
3. Você não deve omitir semicolons antes das declarações começando com (, [, +, -e / personagens.
4. Quando o script está conectado, insira explicitamente os semicolons entre os scripts
5. Você não deve envolver a linha antes dos parâmetros de retorno, jogar, quebrar, continuar, ++ ou -
6. Um semicolon não pode ser deduzido como um separador para o cabeçalho de um loop ou uma declaração vazia.