ECAM-262中定义了7种错误类型
Error
EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
Error是基类型 其他错误类型继承该类型 该类错误少见 如果有也是浏览器抛出 主要用于开发人员自定义错误
EvalError 使用eval()函数时抛出的异常
RangeError 数值超出相应范围
例如数组定义下标是负数或者Number.MAX_VALUE
var iArray1 = new Array(-1);
var iArray2 = new Array(Number.MAX_VALUE);
ReferenceError RHS查询在所有嵌套的作用域都找不到该变量 抛出该错误
var obj = x;// x未声明 RHS找不到
如果LHS左查询找不到目标变量 就会在顶层全局作用域里新建该名词的变量 , 严格模式下 不会创建全局变量 也会抛出referenceError
obj = 3;
TypeError 对一个变量的值做不合理的操作 如对非函数的变量进行函数调用
或者引用null或undefined类型的值得属性
var o = new 10;
ReferenceError是跟作用域判别失败有关 TypeError是作用域判别成功后对结果非法操作或者不合理