2011-08-24 12 views

Respuesta

20

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 y b se han establecido
  • c 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.

+0

Por lo tanto, no se supone que afecte las operaciones asincrónicas. Kewlio. –

+0

¿Qué tal una configuración más complicada con javascript llamado desde múltiples archivos? – Kevin

+2

@Kevin: ver http://jsfiddle.net/TGBYV/. Básicamente lo mismo por archivo. – pimvdb

0

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.

1

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: #

enter image description here

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".

2

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.

Cuestiones relacionadas