简单JavaScript代码运行报Unexpected token '.'语法错误如何解决
错误产生原因
- 该报错是因为你当前运行代码的JavaScript环境不支持可选链操作符(?.),可选链是ES2020(ES11)才正式发布的新语法,低于14.0.0版本的Node.js、IE浏览器、未配置语法降级插件的旧版编译工具都无法识别该语法,会把
?.中的第二个.判定为非法字符,从而抛出语法错误。
修复方案
方案1:替换为全兼容的传统写法(无需修改环境,通用)
手动拆解可选链的嵌套判断逻辑,修改后代码如下:
const fee = t.transaction_info.hasOwnProperty("fee_amount") ? -(t.transaction_info && t.transaction_info.fee_amount && t.transaction_info.fee_amount.value) : 0;
如果你已经能确定t.transaction_info字段一定存在,还可以进一步简化:
const fee = t.transaction_info.hasOwnProperty("fee_amount") ? -t.transaction_info.fee_amount.value : 0;
方案2:升级环境/配置语法支持
- Node.js运行场景:将Node.js版本升级到14.0.0及以上,该版本开始原生支持可选链语法。
- 前端浏览器运行场景:如果无需兼容低版本浏览器可以直接使用,需要兼容的话在babel配置中添加
@babel/plugin-proposal-optional-chaining插件做语法降级即可。
内容的提问来源于stack exchange,提问作者Jahir Uddin
相关产品推荐
相关产品推荐

