1. ReferenceError(引用错误)
    对象代表当一个不存在的变量被引用时发生的错误,简单说来就是在作用域中找不到。
function sayHi(){
      console.log(age);
      let age = 21;
   }
   sayHi()

运行时由于let声明的变量不会先被提升(暂时性死区),所以在前面打印的时候会有此报错:

android js报错信息 js常见报错_错误提示


或者当我们直接在全局打印未被定义的变量时也会出现这样的错误:

<script>
        console.log(a);
    </script>

android js报错信息 js常见报错_javascript_02


总结来说就是×× is is not defined,看见这种找作用域是否存在该变量就完事儿了。

2、TypeError(类型错误)
对象用来表示值的类型非预期类型时发生的错误,简单说就是在作用域中找到了,但是用它做了它不可能做的事情。

var result = (function(){
            var x = 1,y = 2;
            sum = x + y
            return sum;
        })()
        result()

立即执行函数的执行结果sum返回给result,但是由于此时result不是一个函数,所以直接将它当函数用时就会这样报错,这是最常被写出来的错误。其余比如在new关键字后面直接写上数字类型的值也是不允许的,但是这种相信我们自己一般也不会这么写。

android js报错信息 js常见报错_错误提示_03

  1. RangeError
    当一个值不在其所允许的范围或者集合中,这个错误最常见以下两种情况:
    a. Number对象的toFixed方法参数超出范围;
    b.以及函数堆栈超过最大值
var num = new Number(1.5);
        console.log(num.toFixed(101));

android js报错信息 js常见报错_javascript_04


根据错误提示我们也可以知道:此方法的参数范围需要介于0-100(包含0和100),负数及超出100的数都是不行的。

var num = 0;
        function fun() {
            console.log(++num)
            fun()
        }
        fun()

android js报错信息 js常见报错_作用域_05


注意此时并不是一开始就报错,而是等到函数堆栈超出范围时才开始报错。

  1. SyntaxError(语法错误)
    尝试解析语法上不合法的代码的错误,顾名思义,这类错误一般也都是由于粗心或是对语法规则不熟悉时所犯的。

android js报错信息 js常见报错_html_06


或者有时候会掉个括号什么的,这种错误很多时候写出来在编译软件里就会有错误提示了。