El javascript, cuando se ejecuta a través de JSLint me grita y no estoy seguro de por qué.JSLint quejándose de mi try/catch
/*jslint browser: true, devel: true, evil: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, newcap: true, immed: true */
var foo = function() {
try {
console.log('foo');
} catch(e) {
alert(e);
}
try {
console.log('bar');
} catch(e) {
alert(e);
}
};
foo();
Me dice:
Problema en la línea de 12 caracteres 11: 'e' ya está definido.
} catch(e) {
Parece ser molesto porque tengo una segunda catch(e)
. ¿Por qué sería esto un problema? ¿No simplemente establece e en una variable local dentro del bloque catch? ¿Necesito nombrar de manera exclusiva las variables locales para todos los errores atrapados en una función?
Parece que estás en lo cierto. Supongo que try/catch _no_ introduce scope, como lo demuestra esta prueba rápida que puse: http://jsfiddle.net/VRcwV/ –
¡Oh, acabo de ver la edición! Por lo tanto, no introduce el alcance, pero la variable local creada por la declaración catch no está disponible fuera de esa captura. Entonces, ¿introduce un poco de alcance especializado solo para esa excepción? –
@Squeegy: IE 8 es * no * compatible, parece. Pruebe mi prueba (http://jsfiddle.net/DpHMt/) en ese navegador, y verá * ambas * cajas de alerta abiertas. – PleaseStand