2012-09-25 20 views
5

¿Cuál es la differnce entreDiferencia TypeError y ReferenceError

TypeError: ... is undefined 

y

ReferenceError: ... is not defined 

?

+0

El estándar ECMAScript define en qué escenarios se produce cada tipo de error. [Ver aquí] (http://ecma-international.org/ecma-262/5.1/#sec-15.11.6.3) para obtener una lista completa de estos escenarios. –

+0

¿Podría proporcionar ejemplos de código que arrojen estos errores? –

Respuesta

10

A ReferenceError se produce cuando intenta utilizar una variable que no existe en absoluto.

A Ocurre cuando la variable existe, pero la operación que intenta realizar no es apropiada para el tipo de valor que contiene. En el caso donde el mensaje detallado dice "no está definido", esto puede ocurrir si tiene una variable cuyo valor es el valor especial undefined, e intenta acceder a una propiedad de este.

Para más información sobre este tema, consulte http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/.

7

Los seis tipos de Error de JavaScript

La especificación JavaScript 1.5 define seis tipos de error primarios, como sigue:

EvalError: elevada cuando se utiliza las funciones eval() de una manera incorrecta.

RangeError: Se genera cuando una variable numérica excede su rango permitido.

ReferenciaError: Se genera cuando se utiliza una referencia no válida.

SyntaxError: Se genera cuando se produce un error de sintaxis al analizar el código JavaScript.

TypeError: Se genera cuando el tipo de una variable no es el esperado.

fuerte URIError texto: Criado cuando se utilizan los encodeURI() o decodeURI() funciones de una manera incorrecta.

3

Considere el siguiente código:

function foo(){ 
var d=1234; 
console.log(d.substring(1,2));  
} 
foo(); 

Esto tendrá salida siguiente:

Excepción: TypeError: d.substring no es una función Esto se debe a que se ha utilizado el tipo incorrecto (número) para una operación dada (subcadena que espera una cadena). El objeto TypeError representa un error cuando un valor no es del tipo esperado.

function foo(){ 
var d=1234; 
console.log(c); 
} 
foo(); 

Esto tendrá salida siguiente:

Excepción: ReferenceError: c no está definido Esto es debido a que la referencia para la variable 'c' no existe en cualquiera de ámbito local o global y estamos todavía tratando de usarlo. Se lanza una excepción ReferenceError cuando se accede a una variable inexistente.

Cuestiones relacionadas