You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript代码报错unexpected end of input,无法定位错误行

解决JavaScript中eval()引发的"unexpected end of input"错误

你的代码报错核心原因是生成的数学表达式末尾多了一个运算符,导致eval()无法解析完整的语法结构。

具体问题分析

当传入MathId = "B16-4131-8731"时:

  • MathOrder被解析为"4131"(长度4),通过转换表得到运算符字符串"/+*+"
  • ExtraGate被解析为"8731"(长度4)
  • 原循环逻辑是每一次都拼接数字+运算符,四次循环后得到的表达式是"8/7+3*1+"——末尾多了一个+,这直接导致eval()抛出"unexpected end of input"错误,因为表达式未完成。

修复方案

修改构建finalResult的循环逻辑,只在数字之间插入运算符,避免末尾残留多余符号:

var finalResult = "";
// 循环到倒数第二个元素,只拼接数字+运算符
for (var j = 0; j < MathOrder.length - 1; j++) {
  var digitB = ExtraGate[j];
  finalResult += digitB + convertedMathOrder[j];
}
// 单独添加最后一个数字,不追加运算符
finalResult += ExtraGate[MathOrder.length - 1];

修复后效果

调用encrypt("this has no use yet", "B16-4131-8731")会生成合法表达式"8/7+3*1",eval()执行后得到预期计算结果(约4.142857142857143)。

额外提醒:生产环境中应尽量避免使用eval(),它存在安全风险和性能损耗,建议通过手动拆分表达式、逐段计算的方式替代。

内容的提问来源于stack exchange,提问作者Mini Webdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:52:54