差异TypeError和ReferenceError

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了差异TypeError和ReferenceError相关的知识,希望对你有一定的参考价值。

有什么区别

TypeError: ... is undefined

ReferenceError: ... is not defined

?

答案

当您尝试使用根本不存在的变量时,会出现ReferenceError

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

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

另一答案

这是JavaScript error types

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

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

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

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

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

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

强文本URIError:当encodeURI()decodeURI()函数以不正确的方式使用时引发。

另一答案

请考虑以下代码:

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

这将有以下输出:

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

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

这将有以下输出:

异常:ReferenceError:c未定义这是因为变量“c”的引用在本地或全局范围内不存在,我们仍在尝试使用它。当访问不存在的变量时抛出ReferenceError异常。

以上是关于差异TypeError和ReferenceError的主要内容,如果未能解决你的问题,请参考以下文章

绘制熊猫时间增量

Learn ES2015

Es6系列--let的用法

python中的ValueError和TypeError

将 `require()` 与 `node --eval` 一起使用

区别 TypeError 和 ReferenceError