Разница TypeError и ReferenceError

в чем разница между

TypeError: ... is undefined

и

ReferenceError: ... is not defined

?

3 ответов


A ReferenceError возникает при попытке использовать переменную, которая вообще не существует.

A TypeError происходит, когда переменная существует, но операция, которую вы пытаетесь выполнить, не подходит для типа значения, которое она содержит. В случае если в сообщении написано "Не определен", это может произойти, если у вас есть переменная, значение которой является специальный undefined значение, и вы пытаетесь получить доступ к его свойству.

посмотреть http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/ для некоторых обсуждений, связанных с этим.


Шесть Типов Ошибок JavaScript

спецификация JavaScript 1.5 определяет шесть основных типов ошибок следующим образом:

EvalError: возникает, когда функции eval() используются неверным образом.

RangeError: повышается, когда числовая переменная превышает допустимый диапазон.

ReferenceError: возникает при использовании недопустимой ссылки.

SyntaxError: поднятый когда a синтаксическая ошибка возникает при обработке кода JavaScript.

TypeError: повышается, когда тип переменной не является ожидаемым.

сильный текст URIError: возникает, когда encodeURI() или decodeURI() функции используются неправильно.


рассмотрим следующий код:

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

это будет иметь следующий результат:

исключение: TypeError: d.подстрока не является функцией Это связано с тем, что мы использовали неправильный тип (номер) для данной операции(подстрока, которая ожидает строку).Объект TypeError представляет ошибку, если значение не относится к ожидаемому типу.

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

это будет иметь следующий результат:

исключение: ReferenceError: c не определен Это потому что ссылка на переменную " c " не существует ни в локальной, ни в глобальной области, и мы все еще пытаемся ее использовать.Исключение ReferenceError возникает при обращении к несуществующей переменной.