JS错误信息类型

1.SyntaxError 语法错误

①变量名不规范

//  变量名不规范
var 1 = 1;

未被捕获的语法错误,这个错误是js机制自动抛出来的 意外的数字

//  下面两个是同一种情况
var 1a = 1;
function 1test(){}

无效或意外的标记

//  关键字赋值
new = 5;

意外的标记 =

下面最后加了冒号

//  基本的语法错误
var a = 5:

意外的标记 :


2.ReferenceError 引用错误

//  变量或者函数未被声明
test()

test没有被定义

//   给无法被赋值的对象赋值的时候
var a = 1 = 2
var a = 2;
console.log(a) = 3

无效的左侧赋值


3.RangeError 范围错误

//   数组长度为负数时
var arr = [1,2,3]
arr.length = -2

无效的数组长度

//  对象方法参数超出可行范围 
var num = new Number(66.66);
console.log(num.toFixed(-1));

数字参数参数必须在0到100


4.TypeError 类型错误

//   调用不存在的方法
123()

123不管有没有定义 它都不是一个方法 根本就没有判断定义了没有,先判断类型,是不是属于一个function,如果是一个function 后面就可以跟括号

var obj = {};
obj.say();

并没有在obj里找到say这个方法,这个时候就会报这个错误 因为 点 后跟的是属性名但是带了括号,属性不可能像方法一样执行, 所以要看是不是方法,如果say不带括号就不会报错,不带括号时会认为是个属性但没有赋值

//  实例化原始值的问题
var a = new  'string';

new后面必须要是一个构造器 ,new一个原始值会报错 new后要跟函数 不管是构造函数还是普通函数,只要new函数 就会有实例化 'string' 不是函数就会报错

var a = new  123;

这个和上面情况一样,不是构造函数


5.URIError URI错误

URI 统一资源标识符 UNIFORM RESOURCE IDENTIFIER
URL 统一资源定位符 UNIFORM RESOURCE LOCATOR
URN 统一资源名称 UNIFORM RESOURCE NAME
URL和URN是URI的子集,属于URI
URL有协议有域名有资源空间 通过一个地址能访问到特定的页面
URN 没有了URL中的协议 相当于一个id 名字 指代了资源的唯一性 所以叫NAME
let str = "测试字符";
let encodeStr = encodeURI(str);
console.log(encodeStr);     //  %E6%B5%8B%E8%AF%95%E5%AD%97%E7%AC%A6
let decodeStr = decodeURI(encodeStr);
console.log(decodeStr);     //  测试字符
上面是使用encodeURI方法把中文转为中文编码字符 是js内置的方法,
再使用decodeURI方法把中文编码字符转为中文,也是js内置的方法 ,接下来就随便输个中文编码 看能不能转成中文
let str = "%ef%erffv";
console.log(decodeURI(str));

URI不符合常规的


 6.EvalError eval函数执行错误

现在很少见 因为很少使用eval方法 (不知道怎么让它报错)
es3开始 eval()函数不推荐使用,有性能问题, 难调试, input获取的值和eval混在一起可能会有安全隐患
eval()最大的作用是字符串里写js是可以执行的
eval("var a = 1;console.log(a)")

var obj = {
    a:1,
    b:2
}
console.log(eval("obj"));

打印的不是字符串obj,而是一个对象 换成 console.log(eval(obj)) 也是一样的

然而eval()方法最大的用处不是在这里
json字符串 使用eval()方法后会变成json对象
eval(jsonStr)
json是用来存储数据的,json字符串和json对象 里面不可以嵌有方法,如果里面写的有方法 就是一个普通的对象

这六种错误都可以人为的抛出
var error = new Error("代码错误了")
console.log(error);

会直接出来Error
人为的实例化一个错误 可以实例化构造函数
new SyntaxError("代码错误")
每一种错误类型都对应了一个构造函数,这些构造函数都可以通过实例化来输出响应的错误
如果想输出错误变成红色的 使用console.error()方法
原文地址:https://www.cnblogs.com/easth/p/js_error_type.html