2012-09-25 12 views
5

Qual è la differnce traDifferenza TypeError e ReferenceError

TypeError: ... is undefined 

e

ReferenceError: ... is not defined 

?

+0

Lo standard ECMAScript definisce in quali scenari si verifica ogni tipo di errore. [Vedi qui] (http://ecma-international.org/ecma-262/5.1/#sec-15.11.6.3) per un elenco completo di questi scenari. –

+0

Potrebbe fornire esempi di codice che generano questi errori? –

risposta

10

A ReferenceError si verifica quando si tenta di utilizzare una variabile che non esiste affatto.

A TypeError si verifica quando la variabile esiste, ma l'operazione che si sta tentando di eseguire non è appropriata per il tipo di valore che contiene. Nel caso in cui il messaggio dettagliato indichi "non è definito", ciò può verificarsi se si dispone di una variabile il cui valore è il valore speciale undefined e si tenta di accedere a una proprietà di esso.

Vedere http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/ per alcune discussioni relative a questo.

7

I sei tipi di JavaScript errore

La specifica JavaScript 1.5 definisce sei tipi di errore primario, come segue:

EvalError: sollevata quando le funzioni eval() viene utilizzato in modo non corretto.

RangeError: Sollevato quando una variabile numerica supera l'intervallo consentito.

Riferimento Errore: Sollevato quando viene utilizzato un riferimento non valido.

Sintassi Errore: Generato quando si verifica un errore di sintassi durante l'analisi del codice JavaScript.

TipoErrore: Generato quando il tipo di una variabile non è come previsto.

forte URIError testo: sollevata quando le encodeURI() o decodeURI() funzioni sono utilizzate in modo non corretto.

3

Si consideri il seguente codice:

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

questo avrà seguente risultato:

Eccezione: TypeError: d.substring non è una funzione Questo perché abbiamo usato il tipo sbagliato (numero) per una determinata operazione (sottostringa che si aspetta una stringa). L'oggetto TypeError rappresenta un errore quando un valore non è del tipo previsto.

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

questo avrà seguente risultato:

eccezione: ReferenceError: c non è definito Questo perché il riferimento per la 'c' variabile non esiste in entrambi ambito locale o globale e siamo ancora cercando di usarlo. Un'eccezione ReferenceError viene generata quando si accede a una variabile inesistente.