Si el navegador está ejecutando JavaScript en una página web y encuentra JavaScript no válido (por ejemplo, somerandomthingy;) ¿La ejecución de JavaScript se detiene en ese punto o continúan las operaciones asincrónicas? También los eventos de JavaScript todavía funcionan (por ejemplo, haciendo clic).¿Se detiene la ejecución de javascript cuando se encuentra una línea no válida?
Respuesta
Sí, excepto los asíncronos. http://jsfiddle.net/pimvdb/R4dfJ/3/
DIY:
var a = 1, b, c;
setTimeout(function() {
b = 2;
console.log('Running', a, b, c);
}, 1000);
somerandomthingy;
c = 3;
Uncaught ReferenceError: somerandomthingy is not defined
Running 1 2 undefined
Así:
a
yb
se han establecidoc
no se ha establecido- Tiempo de espera todavía ocurre
En cuanto a 'does onclick still work' - bueno, si el controlador está configurado en código que se ejecuta (es decir antes de un error) lo hace; en caso de que se ponga después del código de error, no vinculará el controlador para que los eventos no funcionen.
Creo que la ejecución se detiene. Si configura una alerta después de una línea de código que se rompe, no alcanzará la alerta, lo que me lleva a creer que la ejecución se detiene. Sin embargo, no estoy seguro si lo mismo es cierto para asynch XmlHtttpRequests.
Depende en cierto modo de lo que esté haciendo. Por lo general, las cosas dejarán de ejecutarse y, si está utilizando un navegador inteligente con una consola, se registrará un mensaje de error (y a veces estos mensajes de error son útiles, incluso, pero no siempre).
UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #
A veces, sin embargo, las cosas se acaba de fallar en silencio sin ningún error ni advertencia, especialmente si usted está usando jQuery u otra biblioteca. Pasé horas solucionando problemas por qué algo funcionaba bien en WebKit y Firefox pero fallaba silenciosamente en IE, y rastreaba el culpable de un error PEBCAK en un método jQuery .append() que intentaba insertar HTML no válido en el DOM. Era enloquecedor porque todo lo demás funcionaba bien, sin errores, sin advertencias, nada, pero en IE esa función simplemente no "funcionaba".
No se ejecutó ningún código después del error.
function inAFunction(){
alert("one");
x = y;
alert("two");
}
inAFunction();
verá "uno", pero no "dos"
alert("one");
x = y;
alert("two");
verá "uno", pero no "dos"
var a = {
b : c
}
alert("here");
verá nada.
- 1. "etiqueta no válida" cuando se usa JSONP?
- 2. NSTimer no se detiene
- 3. ActiveMQ excepción cuando se detiene
- 4. Javascript "==" operador se encuentra
- 5. ¿Cómo se detiene la ejecución de Grails en Intellij?
- 6. Android: el servicio se detiene cuando se cierra Activity
- 7. ¿El cambio de window.location detiene la ejecución de javascript?
- 8. Diagnosticando una aplicación que no se detiene
- 9. Visual Studio - Confirmar que no se detiene cuando falla
- 10. Firebug se detiene incluso cuando no se establece un punto de interrupción
- 11. Javascript setTimeout detiene la ejecución de otro script
- 12. El quince de febrero no se encuentra
- 13. dlopen() no se encuentra
- 14. no válida de emergencia cuando se utilizan los números octales
- 15. ¿Por qué no se detiene Visual Studio cuando se producen excepciones?
- 16. cap_ios.h no se encuentra
- 17. ¿Qué le sucede a una AsyncTask cuando se detiene/destruye la actividad de inicio mientras aún está en ejecución?
- 18. donde se encuentra una nueva línea en una cadena:
- 19. ¿Cómo se muestra un valor predeterminado cuando no se encuentra una coincidencia en una consulta?
- 20. Manejo de FileContentResult cuando no se encuentra el archivo
- 21. cronómetro no se detiene en el androide
- 22. Temporizador no se detiene en Android
- 23. Java: Separar una cadena cuando una letra mayúscula se encuentra
- 24. Cuando un error detiene la ejecución en SQL Server?
- 25. ¿Cómo se interrumpe o se detiene la ejecución actual del trabajo de cuarzo?
- 26. Geolocalización no se detiene en Phonegap
- 27. extjs combo no se detiene cargando 4.07
- 28. ¿Cómo se detiene un ciclo infinito en Javascript?
- 29. ApplicationInstance.CompleteRequest no detiene la ejecución del código debajo de él?
- 30. MySQL "buena" manera de insertar una fila si no se encuentra, o actualizarla si se encuentra
Por lo tanto, no se supone que afecte las operaciones asincrónicas. Kewlio. –
¿Qué tal una configuración más complicada con javascript llamado desde múltiples archivos? – Kevin
@Kevin: ver http://jsfiddle.net/TGBYV/. Básicamente lo mismo por archivo. – pimvdb