差异TypeError和ReferenceError

use*_*330 7 javascript firefox typeerror referenceerror

什么是两者之间的差异

TypeError: ... is undefined
Run Code Online (Sandbox Code Playgroud)

ReferenceError: ... is not defined
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 22

ReferenceError当您尝试使用根本不存在的变量时会发生A.

TypeError当变量存在时会发生A ,但您尝试执行的操作不适合它包含的值类型.在详细消息显示"未定义"的情况下,如果您有一个值为特殊undefined值的变量,并且您尝试访问它的属性,则会发生这种情况.

有关此问题的一些讨论,请参阅http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/.


小智 13

以下是JavaScript错误类型:

JavaScript 1.5规范定义了六种主要错误类型,如下所示:

EvalError:以不正确的方式使用eval()函数时引发.

RangeError:当数值变量超出其允许范围时触发.

ReferenceError:使用无效引用时引发.

SyntaxError:在解析JavaScript代码时发生语法错误时引发.

TypeError:当变量类型不符合预期时引发.

强文本的URIError:时引发encodeURI()decodeURI()功能不正确的方式被使用.


Pra*_*t_M 5

考虑以下代码:

function foo(){
 var d=1234;
 console.log(d.substring(1,2));     
}
foo();
Run Code Online (Sandbox Code Playgroud)

这将有以下输出:

异常:TypeError: d.substring is not a function 这是因为我们对给定的操作(需要字符串的子字符串)使用了错误的类型(数字)。当值不是预期类型时,TypeError 对象表示错误.

function foo(){
 var d=1234;
 console.log(c);
}
foo();
Run Code Online (Sandbox Code Playgroud)

这将有以下输出:

异常:ReferenceError: c is not defined 这是因为变量“c”的引用不存在于局部或全局作用域中,我们仍在尝试使用它。当访问不存在的变量时抛出 ReferenceError 异常.