Разница 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 возникает при обращении к несуществующей переменной.