如何修复此语法错误?

时间:2009-07-23 17:13:22

标签: javascript syntax-error

代码是:

  function roundAmount(theDecimal) { 
    var s = "" + Math.round(theDecimal * 100) / 100 
    var i = s.indexOf('.') 
    if (i < 0) { 
        return s + ".00" 
    } 
    var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3) 
    if (i + 2 == s.length)     
        t += "0" 
    return t 
  }

错误行:

if (i < 0) return s + ".00"

错误是:

error: expected (;)

有谁知道如何解决这个问题?

5 个答案:

答案 0 :(得分:5)

if (i < 0) return s + ".00";

请注意语句末尾的;。就个人而言,我更喜欢围绕if中的几乎所有{},例如

if (i < 0) 
{
    return s + ".00";
}

这有助于调试和步进代码。

答案 1 :(得分:5)

关于您的脚本:

上面脚本中的问题是最后一个if语句执行一些操作后跟一个返回。手术后需要使用分号。

将来,作为良好做法,请确保在每个有效声明后加上分号。这样就不会打扰你了。

将每一行想象成一种思想,并将花括号视为将“思想”“组合”在一起“联系”的方式。

以下是一个完整的想法,说“给我一个变量”i“并给它1 + 2的值;

var i = 1 + 2;

以下是对“如果我是3然后将i加1”的条件的完整考虑。 “为我添加1”的想法是它自己的想法,所以它需要一个分号。因为IF语句的花括号是特殊的,因为只要你在它之后加上一个“块”(这就是花括号的真正构成),它们就不需要在它们“完全思考”之后使用分号,以包含思想

这意味着以下内容有效:

if( i == 3 ) {
    i = i + 1;
}

以下是有效,因为if之后的分号结束了“think”之前if知道如果我等于3该怎么做:

if( i == 3 ) ; {
    i = i + 1;
}

有关基本的JavaScript教程,请查看W3Schools

“必须有更好的方法吗?”

每当你发现自己在decmials上做了大量的字符串操作时,最好先问问自己“有更好的方法吗?”。

看起来你正在编写一个函数来将数字四舍五入到最接近的百分数,同时显示两个小数点。有一个更简单的方法来做到这一点。你可以四舍五入到最接近的百分之一,并让javascript输出定点数。

示例:

function roundAmount( theDecimal ) {
    //first round to the nearest hundredth
    //then return the value with two decimal places as a string
    return theDecimal.toFixed( 2 );
}

答案 2 :(得分:4)

在行尾添加分号!像这样:

if (i < 0) return s + ".00";

答案 3 :(得分:4)

期待分号,所以添加分号。

if (i < 0) 
  return s + ".00";

答案 4 :(得分:0)

我没有看到您在之前的评论中发布的代码有任何特别的错误,但我建议您在语句的末尾添加一个分号。虽然它们不是必需的,但它通常可以更容易地调试这些问题。