funktionen funktion - Sind geschweifte Klammern in einzeiligen Anweisungen in JavaScript erforderlich?





8 Answers

Es gibt einen Aspekt der Lesbarkeit - wenn Sie zusammengesetzte Anweisungen haben, kann das sehr verwirrend werden. (Einrücken hilft, bedeutet aber für den Compiler / Interpreter nichts)

var a;
var b;
var c;

//Indenting is clear
if (a===true)
  alert(a); //On on IF
alert(b); //Always

//Indenting is bad
if (a===true)
  alert(a); //On on IF
  alert(b); //Always but expected?

//Nested indenting is clear
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
alert (b); //Always

//Nested indenting is misleading
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
  alert (b); //Always but expected as part of first if?

//Compound line is misleading
//b will always alert, but suggests it's part of if
if (a===true) alert(a);alert(b); 
else alert(c); //Error, else isn't attached

Und dann gibt es einen Erweiterbarkeitsaspekt:

//Problematic
if (a===true)
  alert(a);
  alert(b); //We're assuming this will happen with the if but it'll happen always
else       //This else is not connected to an if anymore - error
  alert(c);

//Obvious
if (a===true) {
  alert(a); //on if
  alert(b); //on if
} else {
  alert(c); //on !if
} 

(Wenn Sie immer die Klammern haben, wissen Sie, dass Sie andere Anweisungen in diesen Block einfügen).

aufrufen typescript datentypen

Ich habe einmal gehört, dass das Verlassen der geschweiften Klammern in einzeiligen Anweisungen in JavaScript schädlich sein könnte. Ich erinnere mich nicht mehr an die Argumentation und eine Google-Suche half nicht viel. Gibt es etwas, das es gut macht, alle Anweisungen in geschweiften Klammern in JavaScript zu umgeben?

Ich frage, weil jeder scheint so zu tun.




Es gibt kein Wartbarkeitsproblem!

Das Problem mit euch allen ist, dass Sie überall Semikolons setzen. Sie benötigen keine geschweiften Klammern für mehrere Anweisungen. Wenn Sie eine Anweisung hinzufügen möchten, verwenden Sie einfach Kommas.

if (a > 1)
 alert("foo"),
 alert("bar"),
 alert("lorem"),
 alert("ipsum");
else
 alert("blah");

Dies ist ein gültiger Code, der so läuft, wie Sie es erwarten!




Es ist eine Frage des Stils, aber geschweifte Klammern sind gut, um zu verhindern, dass andere baumeln .




Es gibt keinen Programmiergrund, die geschweiften Klammern in Anweisungen mit einer Zeile zu verwenden.

Dies kommt nur auf die Vorlieben und Lesbarkeit der Programmierer zurück.

Dein Code wird deswegen nicht brechen.




Ich arbeite gerade an einem Minifier. Sogar jetzt überprüfe ich es auf zwei riesigen Skripten. Experimentell fand ich heraus: Sie können die geschweiften Klammern hinter für, wenn, sonst, while Funktion entfernen, wenn die geschweiften Klammern ';', 'Rückkehr', 'für', 'wenn', 'sonst', 'während', 'tun', 'funktionieren'. Unabhangige Zeilenumbrüche.

function a(b){if(c){d}else{e}} //ok  
function a(b){if(c)d;else e}   //ok

Natürlich müssen Sie die schließende Klammer durch ein Semikolon ersetzen, wenn nicht an einer anderen schließenden Klammer gefolgt wird.

Eine Funktion darf nicht in einem Komma enden.

var a,b=function()c;  //ok *but not in Chrome
var b=function()c,a;  //error  

Getestet auf Chrome und FF.




Ich möchte nur darauf hinweisen, dass Sie die geschweiften Klammern auch nur von den anderen Klammern entfernen können. Wie in diesem Artikel von John Resig gesehen .

if(2 == 1){
    if(1 == 2){
        console.log("We will never get here")
    }
} else 
    console.log("We will get here")



Es gibt eine Möglichkeit, mehrere Zeilen nicht geschweifte Klammern zu erreichen, wenn Anweisungen ... (Wow was Englisch ..) aber es ist irgendwie Tedius:

if(true)
   funcName();
else
   return null;


function funcName(){
  //Do Stuff Here...
}



Die Anfangseinrückungsstufe einer Anweisung sollte der Anzahl der darüber liegenden offenen Klammern entsprechen. (ohne zitierte oder kommentierte Klammern oder solche in Präprozessordirektiven)

Ansonsten wäre K & R ein guter Eindrucks-Stil. Um ihren Stil zu korrigieren, empfehle ich, kurze einfache if-Anweisungen in einer Zeile zu platzieren.

if (foo) bar();    // I like this. It's also consistent with Python FWIW

Anstatt von

if (foo)
   bar();   // not so good

Wenn ich einen Editor schreiben würde, würde ich den Auto-Format-Button dazu bringen, die Leiste bis zur selben Zeile wie foo anzusaugen, und ich würde Klammern um den Balken einfügen, wenn du Return drückst, bevor es so aussieht:

if (foo) {
  bar();    // better
}

Dann ist es einfach und konsistent, neue Anweisungen oberhalb oder unterhalb von Balken innerhalb des Körpers der if-Anweisung hinzuzufügen

if (foo) {
  bar();    // consistent
  baz();    // easy to read and maintain
}



Related


Tags

javascript