【问题标题】:JavaScript SyntaxErrorJavaScript 语法错误
【发布时间】:2013-10-26 05:32:12
【问题描述】:

我正在通过阅读 Eloquent JavaScript 来学习 JavaScript。我在本书网站提供的控制台上运行我的代码。我从以下代码中得到了SyntaxError : Unexpect Identifier。请帮忙。

function absolute (n){
  if (n < 0)
    return -n;
  else
    return n;
}  

function average(x, y){
  return (x + y) / 2;
}


function isGoodEnough(x, guess){
  return (absolute(x - guess) < 0.0001);
}

function maybe(x, guess){
  if isGoodenough(x, guess){
    return guess;
  }
  else{
    return maybe(x, average(x, x/guess));
  }
}

function sqrt(x){
  return maybe(x, 1);
} 

【问题讨论】:

  • 它是否告诉你语法错误在哪一行?
  • maybe 函数中的 if isGoodEnough(x, guess) 周围缺少括号。
  • 你应该使用return -1*n,而不是return -n。另外,JSlint 是你的朋友。
  • @DesertIvy:return -n; 是有效代码。 jsfiddle.net/Buqh9
  • 这个问题及其答案很糟糕......它们只对这个非常具体的问题有用。调试教程对未来的访问者会更有帮助。

标签: javascript recursion syntax


【解决方案1】:

您需要在 if 条件和 else 周围加上括号。在 if 语句之后也使用括号来测试语句。应该是这样的

 function absolute (n){
  if (n < 0){
    return -n;
    }
  else {
    return n;
    }
  }  

 function average(x, y){
   return (x + y) / 2;
   }


 function isGoodEnough(x, guess){
   return (absolute(x - guess) < 0.0001);
   }

 function maybe(x, guess){
  if (isGoodEnough(x, guess)){
     return guess;
     }
  else{
     return maybe(x, average(x, x/guess));
     }
 }

  function sqrt(x){
   return maybe(x, 1);
  }

【讨论】:

    【解决方案2】:

    您的if 语句中缺少括号:

    if (isGoodEnough(x, guess)) {
    

    您还拼错了函数名称,这将导致另一个错误。

    【讨论】:

      【解决方案3】:

      您需要在 if 条件周围加上括号:

      function maybe(x, guess) {
          if (isGoodEnough(x, guess)) {   // Note extra parentheses
              ...
      

      (您在这里也拼错了“isGoodEnough”。)

      【讨论】:

        【解决方案4】:

        你错过了括号

         if isGoodEnough(x, guess){
            return guess;
          }
        

        应该是

         if (isGoodEnough(x, guess)){
            return guess;
          }
        

        【讨论】:

          【解决方案5】:

          if isGoodenough(x, guess){ 缺少括号:if(isGoodenough(x, guess)){

          【讨论】:

            【解决方案6】:

            isGoodEnough 在 Maybe 函数中拼写错误。

            function maybe(x, guess){
              if isGoodenough(x, guess){
                return guess;
              }
              else{
                return maybe(x, average(x, x/guess));
              }
            }
            

            【讨论】:

            • 这是对的,但拼写错误最多会导致ReferenceError,而不是SyntaxError。
            • 如果修复了括号和拼写错误。现在我超过了最大调用堆栈。我会用循环重写它。
            猜你喜欢
            • 2011-05-09
            • 1970-01-01
            • 1970-01-01
            • 2021-04-29
            • 1970-01-01
            • 1970-01-01
            • 2018-11-29
            相关资源
            最近更新 更多