Solo antes}, después de una o más saltos de línea, y se insertan el final de la entrada del programa
Es decir, solo puede omitir las semicolones donde termina una línea, un bloque de código y un trozo de programa.
Es decir, puede escribir el siguiente código
La copia del código es la siguiente:
Función Square (x) {
var n = +x
regresar n * n
}
Pero no se puede escribir como el siguiente código, por lo que informará un error
La copia del código es la siguiente:
área de funciones (r) {r = +r return math.pi*r*r} // error
Insertar solo si no se pueden analizar las marcas de entrada posteriores
En otras palabras, la inserción de semicolon es un mecanismo de corrección de errores. Lea el código y habla
La copia del código es la siguiente:
A = B
(F())
// Puede analizar correctamente una declaración separada con el precio unitario de la siguiente declaración.
a = b (f ())
A = B
F()
// analizado en dos declaraciones independientes
a = bf (); // El análisis es incorrecto
Por lo tanto, debe prestar atención al comienzo de la siguiente declaración para determinar si puede omitir legalmente el punto y coma.
(, [, +, -y /, entonces es mejor no omitir el semicolon frente a él.
Dar un ejemplo para ilustrar
La copia del código es la siguiente:
A = B
['r', 'g', 'b']. foreach (function (key) {
console.log (clave);
});
Originalmente pensó que no había error, pero el analizador analizó la siguiente declaración
La copia del código es la siguiente:
a = b ['r', 'g', 'b']. foreach (function (key) {
console.log (clave);
});
Debido a que la segunda oración comienza con [, el analizador no insertará automáticamente un punto y coma después de la primera declaración, por lo que se analiza como se muestra arriba. ¿No es B ['B']. Forreach mal al analizar la ecuación anterior?
Por lo tanto, si las declaraciones que comienzan con los cinco caracteres (, [, +, -y / son mejores para no omitir el punto y coma antes.
Si desea omitir el punto y coma, un programador experimentado seguirá la declaración para garantizar que el analizador analice correctamente. Como se muestra a continuación
La copia del código es la siguiente:
A = B
var x // Una declaración de declaración se agrega especialmente aquí para garantizar que A = B no se analice con (F ())
(F())
Entonces, si necesita omitir un punto y coma, debe verificar si la marca de inicio de la siguiente línea son los cinco caracteres anteriores, lo que hace que el analizador desactive la inserción automática de los semicolones, o también puede prefijar los cinco caracteres (, +, -, y /
Omitir los semicolones causa problemas de conexión de script
La copia del código es la siguiente:
//file1.js
(función () {
// ...
}) ()
//file2.js
(función () {
// ...
}) ()
Cuando los dos archivos anteriores están conectados, se analizarán de la siguiente manera
La copia del código es la siguiente:
(función () {
// ...
})()(función () {
// ...
}) ()
Por lo tanto, omitir las semicolones no solo requiere que tenga cuidado no solo sobre la siguiente etiqueta del archivo actual, sino también sobre cualquier etiqueta que pueda aparecer después de la declaración después de que el script esté conectado.
Para evitar errores de análisis de analizador, puede prefijo un punto y coma adicional en cada archivo para proteger el script de las conexiones descuidadas. Si la declaración inicial del archivo se cambia con el carácter frágil de 5 anteriores, debe agregar un prefijo de semicolon adicional.
Generación de restricción de sintaxis de JavaScript
Producción de restricción de sintaxis de JavaScript: no se permiten descansos de línea entre dos caracteres.
Dar un ejemplo:
La copia del código es la siguiente:
Devolver
{};
El código anterior se analiza en
La copia del código es la siguiente:
devolver;
{}
;
Las reglas de inserción de semicolon para las operaciones de autoinforme y autodecientes
La copia del código es la siguiente:
a
++
b
¿Piensa en en qué se analizará el código anterior? Decimos la respuesta, porque el operador de autoincremento se puede usar como un operador preestablecido y un operador posterior al conjunto, pero el operador posterior al conjunto no puede aparecer antes de la ruptura de la línea, por lo que el código anterior se analiza
La copia del código es la siguiente:
a;
++ b;
El semicolon no se insertará automáticamente como un separador en la cabeza de la instrucción vacía para bucle.
La copia del código es la siguiente:
para (var i = 0, total = 1
i <longitud
i ++) {
total*= i;
}
Los códigos como los anteriores tendrán errores de análisis.
El tiempo del cuerpo de bucle vacío también debe mostrarse semicolones, de lo contrario, también conducirá a errores de análisis.
La copia del código es la siguiente:
función mytest () {
Mientras (verdadero)
}
Debe escribirse de la siguiente manera para evitar errores
La copia del código es la siguiente:
función mytest () {
mientras (verdadero);
}
Resumimos
1. Deduzca las semicolones solo antes de la etiqueta}, al final de una línea y al final del programa
2. Deduzca las semicolones solo cuando la siguiente marca no se puede analizar
3. No debes omitir las semicolones antes de las declaraciones que comienzan con (, [, +, -y / / / caracteres.
4. Cuando el script está conectado, inserte explícitamente semicolones entre los scripts
5. No debe envolver la línea antes de los parámetros de retorno, tirar, romper, continuar, ++ o -
6. Un punto y coma no se puede deducir como un separador para el encabezado de un bucle o una declaración vacía.