未捕获的SyntaxError:计算时出现意外标识符

时间:2019-06-18 18:15:10

标签: javascript html syntax-error

我有一些运行时返回Uncaught SyntaxError的代码,但我不明白为什么。

我尝试通过JSHint进行操作,但无济于事。

以下代码显然是错误的:

function compute(expr, x, string) {
    var whatisx = "x=" + toString(x) + ",";
    var tempAns = parseFloat(eval(whatisx + expr));
    var roundedAnswer = roundNumber(tempAns, 3);
    if (isNaN(tempAns) === true) {
      alert("error");
    }
    if (string) {
      return toString(roundedAnswer);
    } else if (!string) {
      return roundedAnswer;
    } else {
      return null;
      console.log("Error trying to compute value. The string value must be boolean.");
    }
}

当我运行它时,我没有任何控制台日志,并且说加号时出现错误:

var tempAns = parseFloat(eval(whatisx + expr));

同一程序中的另一个问题也是SyntaxError,是我的HTML。

这是我的html:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Grapher</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" charset="utf-8"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.js" charset="utf-8"></script>
    <script type="text/javascript" src="functions.js" charset="utf-8"></script>
    <script type="text/javascript" src="sketch.js" charset="utf-8"></script>
  </head>
  <body>
    <form>
      <label>Graph y=</label>
      <input id="mathExpr" type="text" name="mathExpr" value="">
      <label> from x=</label>
      <input id="x_min" type="text" name="x_min" value="">
      <label> to </label>
      <input id="x_max" type="text" name="x_max" value="">
      <input type="button" name="result" value="Result" onclick="compute(); runp5();">
    </form>
    <h2>Answer: <span id="output"></span></h2>
  </body>
</html>

对此,它表示存在错误

<input type="button" name="result" value="Result" onclick="compute(); runp5();">

这两个我必须解决什么? 预先感谢。

编辑:问题已解决。我当时没有任何参数地调用计算。 (感谢@Pointy)

1 个答案:

答案 0 :(得分:0)

我刚刚回到这个问题,我意识到自己犯了另一个错误。这是我的解决方法:

  1. 正如Pointy用户注意到的那样,我在调用compute()时没有提供其必需的参数。

  2. 我应该在console.log()之后的else语句中添加return,否则根本不会被调用:

// ...

else {
  console.log('message'); // this should come before return
  return null;
} 

这实际上并不能解决我详述的问题,但我想为以后的读者指出这一点。