编写JS class时出现Unexpected token 'class'语法错误如何解决
Uncaught SyntaxError: Unexpected token 'class' 报错的核心原因是当前JavaScript运行环境不支持ES6的class语法,或是代码上下文存在解析冲突,可按照以下步骤逐一排查解决:
排查步骤
1. 检查运行环境兼容性
class是ES2015(ES6)新增的语法,非常旧的运行环境不支持:
- 浏览器端:IE浏览器完全不支持ES6语法,如果你正在用IE测试,直接换Chrome、Edge、Firefox等现代浏览器即可。如果业务需要兼容旧浏览器,需要用Babel工具把ES6代码转译为ES5语法后再运行。
- Node.js端:运行
node -v查看当前Node.js版本,低于6.x的版本不支持class语法,直接升级到Node.js LTS版本即可解决。
2. 检查代码上下文语法
如果确认运行环境支持ES6,大概率是前面的代码漏写分号导致的解析错误:
JavaScript会自动补充分号,但如果上一行代码的结尾和下一行的开头连起来可以被解析成合法语法,就不会自动补分号,比如:
// 上一行漏写分号 let count = 0 // 下面的class会被解析器和上一行合并成 let count = 0 class GameState {},直接报语法错误 class GameState { // ... }
你可以在class声明前手动加一个分号测试,如果加完不再报错,就说明是前面的代码存在缺分号的问题:
;class GameState { constructor() { this.board = [null, null, null, null, null, null, null, null, null]; this.whoseTurn = 1; this.winner = null; } } let gs = new GameState();
3. 检查HTML引入配置
如果你的代码是写在HTML的script标签中,检查script标签的type属性:
- 不要填写
type="text/ecmascript-3"这类指定旧版本标准的属性值 - 如果你使用了ES模块化语法,需要给script标签添加
type="module"属性
如果以上排查都没解决,可以把你的代码复制到Chrome浏览器开发者工具的Console面板直接运行测试,如果在Console中运行正常,就说明你本地的代码运行工具(比如编辑器内置运行插件、打包工具)存在配置问题,优先检查该工具的JS语法支持配置。
内容的提问来源于stack exchange,提问作者DragonsTea25
相关产品推荐
相关产品推荐

