2009-07-23 23 views
2

Der Code ist:Wie behebe ich diesen Syntaxfehler?

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 
    } 

Die Zeile mit dem Fehler:

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

Der Fehler ist:

error: expected (;) 

Wer weiß, wie dies zu beheben?

+0

ach übrigens die laguage Java ist Skript dank –

+0

ein Semikolon fehlt nicht in Javascript egal –

+0

diese Linie in Ordnung ist. Der Fehler muss irgendwo anders sein. Ich denke, es könnte vielleicht eine Zeile darüber sein. Müssen Sie mehr Code sehen ... –

Antwort

5

Über das Skript:

Das Problem im Skript oben ist die letzte if-Anweisung, die einige Operationen gefolgt von einer Rückkehr der Fall ist. Sie benötigen nach der Operation ein Semikolon.

In der Zukunft, als gute Praxis, stellen Sie sicher, ein Semikolon nach alle gültige Aussage zu setzen. Auf diese Weise wird dich das nicht stören.

Denken Sie an jede Zeile als Gedanken, und geschweifte Klammern als Möglichkeiten zum "Gruppieren" und "Verbinden" von Gedanken zusammen.

unten Das ist ein voller Gedanke, „geben Sie mir eine Variable‚i sagt‘und geben ihm den Wert 1 + 2;

var i = 1 + 2; 

Die unten ist ein voller Gedanken über einen Zustand, der sagt:“ Wenn ich ist 3 dann addiere 1 zu i ". Der Gedanke" addiere 1 zu i "ist sein eigener Gedanke, also braucht er ein Semikolon. Da die curlybraces für die IF-Anweisung insofern speziell sind, als sie kein Semikolon nach ihrer benötigen "Voller Gedanke" solange du einen "Block" (was curlybrace wirklich macht) danach lege, um den Gedanken zu umschließen.

Das bedeutet folgendes gilt:

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

Die folgende ist nicht gültig, da das Semikolon nach dem if beendet den „Gedanken“ vor dem, ob weiß, was passiert, wenn i gleich 3 ist zu tun:

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

Für ein grundlegendes Tutorial JavaScript, überprüfen W3Schools aus.

"Es muss einen besseren Weg geben?"

Jedes Mal, wenn Sie viele String-Operationen auf decmials machen, ist es eine gute Idee, sich zu fragen "gibt es einen besseren Weg, dies zu tun?".

Es sieht so aus, als ob Sie eine Funktion schreiben, um eine Zahl auf die nächsten Hundertstel zu runden und dabei zwei Dezimalpunkte anzuzeigen. Es gibt einen viel einfacheren Weg, dies zu tun. Sie können einfach auf die nächsten Hundertstel runden und haben Javascript die Festkommazahl ausgegeben.

Beispiel:

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

Fügen Sie ein Semikolon am Ende der Zeile hinzu! Wie folgt:

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

Es wird ein Semikolon erwartet, fügen Sie also ein Semikolon hinzu.

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

Notiere die ; am Ende der Anweisung. Persönlich bevorzuge ich umgibt fast alle meine if s in {} wie

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

, die in das Debuggen hilft und wenn Code schrittweise.

0

Ich sehe nichts besonders falsch mit dem Code, den Sie in den früheren Kommentaren veröffentlicht haben, aber ich kann vorschlagen, immer ein Semikolon am Ende Ihrer Aussagen hinzuzufügen. Obwohl sie nicht benötigt werden, ist es in der Regel einfacher, Probleme wie diese zu debuggen.

Verwandte Themen