2

コードは次のとおりです。

  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 (;)

誰かがこれを修正する方法を知っていますか?

4

5 に答える 5

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

;ステートメントの最後にあることに注意してください。if個人的には、ほとんどすべての自分を囲む{}のが好きです。

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

これは、コードのデバッグとステップ実行に役立ちます。

于 2009-07-23T17:16:55.803 に答える
5

スクリプトについて:

上記のスクリプトの問題は、いくつかの操作を実行してからreturnを実行する最後のifステートメントです。操作後にセミコロンが必要です。

将来的には、良い習慣として、すべての有効なステートメントの後にセミコロンを付けるようにしてください。そうすれば、これはあなたを悩ませることはありません。

各行を思考として考え、中括弧は思考を「グループ化」および「関連付ける」方法として考えます。

以下は、「変数「i」を与えて、それに値1+2を与える」という完全な考えです。

var i = 1 + 2;

以下は、「iが3の場合、iに1を追加する」という条件についての完全な考えです。「iに1を追加する」という考えはそれ自体の考えであるため、セミコロンが必要です。IFステートメントのカーリーブレースは、「ブロック」(カーリーブレースが実際に作成するもの)を後に配置する限り、「完全な思考」の後にセミコロンを必要としないという点で特別なので、思考を囲むために。

これは、以下が有効であることを意味します。

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

ifの後のセミコロンは、iが3に等しい場合に何をすべきかを知っている場合、ifの前の「思考」を終了するため、以下は無効です。

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

基本的なJavaScriptチュートリアルについては、W3Schoolsをご覧ください。

「もっと良い方法があるに違いない?」

デクミアルで多くの文字列操作を行っていることに気付いたときはいつでも、「これを行うためのより良い方法はありますか?」と自問することをお勧めします。

小数点以下2桁を表示しながら、数値を100分の1に四捨五入する関数を作成しているようです。これを行うには、はるかに簡単な方法があります。100分の1に四捨五入して、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 );
}
于 2009-07-23T17:43:46.717 に答える
4

行の最後にセミコロンを追加してください!このような:

if (i < 0) return s + ".00";
于 2009-07-23T17:16:24.430 に答える
4

セミコロンが必要なので、セミコロンを追加します。

if (i < 0) 
  return s + ".00";
于 2009-07-23T17:16:26.350 に答える
0

以前のコメントで投稿したコードに特に問題はありませんが、ステートメントの最後に常にセミコロンを追加することをお勧めします。これらは必須ではありませんが、通常、このような問題のデバッグが容易になります。

于 2009-07-23T17:31:59.610 に答える