zoukankan      html  css  js  c++  java
  • 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()方法
  • 相关阅读:
    Discuz!X/数据库操作方法
    使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别
    ECShop模板原理
    ecshop中smarty最常用的6大基本语法
    Laravel学习笔记
    Laravel的目录结构分析
    Intellij Idea 常用快捷键
    Code optimization and organization in Javascript / jQuery
    Bossies 2015: The Best of Open Source Software Awards
    解决jetty runner锁定js
  • 原文地址:https://www.cnblogs.com/easth/p/js_error_type.html
Copyright © 2011-2022 走看看