2012-09-25 13 views
5

Jaka jest differnce międzyRóżnica TypeError i ReferenceError

TypeError: ... is undefined 

i

ReferenceError: ... is not defined 

?

+0

Standard ECMAScript określa, w których scenariuszach występuje każdy typ błędu. [Zobacz tutaj] (http://ecma-international.org/ecma-262/5.1/#sec-15.11.6.3), aby uzyskać pełną listę tych scenariuszy. –

+0

Czy możesz podać przykłady kodu, które rzucają te błędy? –

Odpowiedz

10

A ReferenceError występuje, gdy próbujesz użyć zmiennej, która w ogóle nie istnieje.

A TypeError występuje, gdy zmienna istnieje, ale operacja, którą próbujesz wykonać, nie jest odpowiednia dla typu wartości, którą zawiera. W przypadku, gdy szczegółowy komunikat mówi "nie jest zdefiniowany", może się tak zdarzyć, jeśli masz zmienną, której wartością jest specjalna wartość undefined i próbujesz uzyskać dostęp do jej właściwości.

Aby uzyskać więcej informacji na ten temat, zobacz stronę http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/.

7

Sześciosylabową JavaScript typów błędów

Kod JavaScript 1,5 opis określa główne sześć rodzajów błędów, takie jak:

EvalError: Podnoszone gdy funkcje Eval() stosuje się w nieprawidłowy sposób.

RangeError: Wywoływany, gdy zmienna numeryczna przekroczy dozwolony zakres.

ReferenceError: Wywoływany, gdy używane jest nieprawidłowe odwołanie.

Błąd składni: Wywoływany, gdy wystąpi błąd składni podczas analizowania kodu JavaScript.

TypeError: Wywoływany, gdy typ zmiennej nie jest zgodny z oczekiwaniami.

silny URIError tekst: Raised gdy encodeURI() lub decodeURI() funkcje stosowane są w nieprawidłowy sposób.

3

Rozważmy następujący kod:

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

będzie to miało następujące wyjścia:

Wyjątek: TypeError: d.substring nie jest funkcją To dlatego użyliśmy niewłaściwy typ (numer) dla danej operacji (podłańcuch, który oczekuje ciągu znaków). Obiekt TypeError reprezentuje błąd, gdy wartość nie jest oczekiwanego typu.

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

będzie to miało następujące wyjścia:

Wyjątek: ReferenceError: c nie jest zdefiniowana To dlatego, że punktem odniesienia dla zmiennej „c” nie istnieje w żadnym zakresie lokalnym lub globalnym i nadal jesteśmy próbuje go użyć. Wyjątek ReferenceError jest generowany, gdy uzyskuje się dostęp do nieistniejącej zmiennej.

Powiązane problemy