ReferenceError和TypeError的区别

ReferenceError:---- 指在RHS查询中所有嵌套的作用于中遍寻不到所需的变量,引擎就会抛出ReferenceError异常。

ReferenceError同作用域判别失败相关,而TypeError这代表作用域判别成功了,但是对结果的操作是非法或不合理的。

eg:

function foo(a) {
    console.log(a + b);
    b = a;
}
var c = foo(2);

 

比如以上示例,其中在console.log(a+b)对b进行RHS查询的时候,未找到b,即RHS引用不成功导致ReferenceError的异常:具体异常时b未定义

 

总结:作用域、LHS和RHS

不成功过的RHS引用会导致抛出ReferenceError异常。

不成功的LHS引用会导致自动隐私地创建一个全局变量(非严格模式下),该变量使用LHS引用的目标作为标识符,或者抛出ReferenceError异常(严格模式下)。

 

posted @ 2022-12-09 19:18  寅信  阅读(268)  评论(0)    收藏  举报