JavaScript创建对象报Unexpected identifier语法错误排查

报错原因
抛出SyntaxError: Unexpected identifier且错误定位到对象的name属性行,本质是JS解析器没有把你写的大括号识别为对象字面量的起始标记,将后续的键值对判定为非法语法,常见触发场景:
- 对象定义的上一行存在语法缺失:比如括号/大括号未闭合、语句末尾漏写分号,导致解析上下文错乱
- 对象赋值语法写错:比如漏写赋值等号,直接写
self { name: 'xxx' },解析器会把self识别为单独语句,后面的大括号被当成独立代码块,name:就成了无法识别的非法标识符 - 注意:JS中
self是宿主环境提供的全局只读属性,指向全局上下文,未做变量声明的前提下直接给self赋值新对象本身就会触发隐性异常,进一步加剧解析错误。
编辑器显示代码为蓝色而非对象属性的预期高亮色,就是语法解析失败的前端表现,和运行时报错是同一个问题导致的。
修复方案
按以下步骤排查修正:
- 定位到报错行上方紧邻的代码,逐行检查所有大括号、小括号是否成对闭合,补全遗漏的分号、括号
- 修正对象定义的语法,标准对象创建写法参考:
// 优先用自定义变量存储创建的对象,不要直接修改全局self const user = { name: 'Gustavo', // 其余对象属性按相同格式续写即可 }
如果确实需要给全局self挂载属性,不要直接在self后拼接大括号,按属性赋值或正确赋值语法写:
// 挂载单个属性 self.name = 'Gustavo' // 给self赋值新对象(非必要不推荐,全局self默认只读,部分环境会直接报错) self = { name: 'Gustavo' }
- 修正后重新运行代码,语法报错会直接消失,编辑器的语法高亮也会恢复正常。
内容的提问来源于stack exchange,提问作者Gustavo Payano
相关产品推荐
相关产品推荐

