Usted puede protegerse a sí mismo cualquiera de estas dos maneras:
function myFunc(thing) {
if (thing && thing.foo && thing.foo.bar) {
// safe to use thing.foo.bar here
}
}
function myFunc(thing) {
try {
var x = thing.foo.bar;
// do something with x
} catch(e) {
// do whatever you want when thing.foo.bar didn't work
}
}
En el primer ejemplo, se comprueba de forma explícita todos los elementos posibles de la variable que se está haciendo referencia a hacer Asegúrese de que sea seguro antes de usarlo para que no tenga excepciones de referencia no planificadas.
En el segundo ejemplo, simplemente coloca un manejador de excepciones alrededor. Acabas de acceder al thing.foo.bar
suponiendo que existe. Si existe, entonces el código se ejecuta normalmente. Si no existe, lanzará una excepción que atraparás e ignorarás. El resultado final es el mismo. Si existe thing.foo.bar
, se ejecutará el código que lo utiliza. Si no existe ese código no se ejecuta. En todos los casos, la función se ejecuta normalmente.
La instrucción if
es más rápida de ejecutar. La excepción puede ser más simple de codificar y usar en casos complejos en los que puede haber muchas cosas posibles de protección y su código está estructurado de modo que lanzar una excepción y manejarlo es una manera limpia de omitir la ejecución cuando no existe algún dato . Las excepciones son un poco más lentas cuando se lanza la excepción.
Creo que entiendo algo, pero no realmente ... ¿puedes publicar tu código? –