JS常见问题概览

Uncaught TypeError: undefined is not a function

Uncaught 表示错误没有被 catch 语句捕获,TypeError 是错误的名字,在这里表示是数据类型错误。undefined is not a function,这是 Error 的主信息,这里表示代码尝试使用 undefined ,把它当做一个函数。 这种错误,通常是执行了一个未定义的方法:

  • 可能一:某个方法没有正确引入。如:this 的指向改变、异步引入问题;

  • 可能二:浏览器兼容问题。如:IE 的 DOM 对某些 API 不支持;

  • 可能三:ES6 没有转换。如:使用了 findIndex 等一些新 API,部分安卓机不支持。

Uncaught ReferenceError: Invalid left-hand side in assignment

未捕获的引入错误:赋值语句左侧变量无效。比如:

// 正确逻辑是比较func1的返回值。因少写了一个“=”,变成了无效的赋值语句。 
function func1 () {
    return 1
}
if (func1() = 1) {
    console.log('true')
}

Uncaught SyntaxError: Invalid or unexpected token

未捕获的语法错误:无效或意外的符号。一般是出现中文符号或者语句不完整。比如:

类似的还有:

Uncaught TypeError: Converting circular structure to JSON

未捕获的语法错误:将循环结构转换为JSON。比如:

Uncaught RangeError: Maximum call stack size exceeded

未捕获边界错误:超过最大调用堆栈大小 。一般是函数递归调用或者循环中没有加判断条件。比如:

onbeforeunload事件无效

onbeforeunload 事件有兼容问题,及一些使用限制。详见 JS基础知识03-onbeforeunload事件

最后更新于

这有帮助吗?