Was ist der Unterschied zwischen den Semikolons in JavaScript und Python?
Python und JavaScript können Entwickler verwenden oder weglassen Semikolons. Aber, ich habe oft gesehen, wie er vorgeschlagen (Bücher und blogs), dass ich, sollten Sie nicht verwenden die Semikolons in Python, während ich sollte immer verwenden Sie in JavaScript.
Gibt es einen technischen Unterschied zwischen dem, wie die Sprachen verwenden Sie Semikolons oder ist das einfach nur ein kultureller Unterschied?
- Wie ist das "nicht konstruktiv"?
- dies ist nicht Wikipedia, sondern kann Sie zu einem Punkt definitive Referenz, hat eine Grundlage in etwas anderes als Konvention?
- Was meinst du?
- Ich würde vorschlagen, re-titling diese Frage so etwas wie "Was sind die Unterschiede zwischen der Art und Weise, dass die Python-und JavaScript-Griff Zeilenumbrüche und Semikolons?". So formuliert, könnte es interpretiert werden, als mehr eine Frage über Kultur, über die technischen Unterschiede. Dies ist wahrscheinlich der Grund, warum Menschen wählen, um zu schließen.
- Dies ist ein Beispiel, dass die Trennung der
programmers.stackexchange
vonstackoverflow
ist eine heikle situation. - Ich habe bearbeitet die Frage, um es den Fokus mehr auf die objektiven technischen Seite, als das subjektive kulturelle Seite, in der Hoffnung, dass es wieder geöffnet. Bitte fühlen Sie sich frei, um das rückgängig Bearbeiten, wenn Sie nicht damit einverstanden sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Semikolon in Python sind komplett optional (es sei denn, Sie wollen, um mehrere Anweisungen in eine Zeile natürlich). Ich persönlich finde Python-code mit Semikolons am Ende jeder Anweisung sieht sehr hässlich aus.
Nun, in Javascript, wenn Sie nicht schreiben Sie ein Semikolon, ist man automatisch eingefügt1 am Ende der Zeile. Und das kann zu Problemen führen. Bedenken Sie:
Würden Sie denken, dies gibt
a + b
, aber Javascript einfach austricksen läßt Sie und sieht dies als:Rückkehr
undefined
statt.1 Siehe Seite 27, Ziffer 7.9 - Automatic Semicolon Insertion auf ECMAScript Language Specification für weitere details und Einschränkungen.
timeit
von der Befehl-Linie. Semikolons können Sie mehrere Anweisungen in einer Zeile.return \n a+b;
würde nicht dazu führen, die überlistung zureturn; \n a+b;
als gut, aber Jeremy Bank Antwort erklärt, dass: JavaScript nur zu behandeln, wird ein Zeilenumbruch als ein Semikolon, wenn es einen syntax-Fehler nicht zu.Dies hatte mich verwirrt für die längste Zeit. Ich dachte, es war nur ein kultureller Unterschied, und dass jeder beschwert sich über Semikolon einfügen die schlechteste feature in der Sprache ein idiot. Das oft wiederholte Beispiel aus NullUserException Antwort nicht Wiegen wollte mich da, ohne Einrückung, Python verhält sich ähnlich wie JavaScript in diesem Fall.
Dann, eines Tages, schrieb ich etwas vage, wie diese:
Ich erwartet, dass es interpretiert werden wie diese:
War es tatsächlich interpretiert wie dieser:
Ich nun verwenden Sie Semikolons.
JavaScript wird nur1 behandeln ein Zeilenumbruch wie ein Semikolon in diesen Fällen:
throw
oderreturn
Schlagwort und Ausdruck.continue
oderbreak
Schlüsselwort und einem Bezeichner.++
oder--
Betreiber.Diese Blätter Fällen wie diesem, wo das Verhalten ist nicht das, was Sie erwarten würde. Einige people2 angenommen haben, Konventionen, nur verwenden Sie Semikolons, wo nötig. Ich bevorzuge zu Folgen, die standard-Konvention immer mit Ihnen, nun, ich weiß, es ist nicht sinnlos.
1 habe ich weggelassen, ein paar kleinere details, konsultieren Sie ECMA-262-5e Abschnitt 7.9 für die genaue Beschreibung.
2 Twitter Bootstrap ist ein high-profile-Beispiel.
Abgesehen von der syntaktischen Probleme, es ist teilweise eine kulturelle. In Python Kultur alle überflüssigen Zeichen sind ein Gräuel, und diejenigen, die nicht Leerzeichen oder ein alphanumerisches, doppelt so.
So Sachen wie führende $ - Zeichen, Semikolons und geschweiften Klammern, sind nicht beliebt. Was Sie tun in Ihrem code aber, ist bis zu Ihnen, aber um wirklich zu verstehen, eine Sprache, es ist nicht genug, nur um zu lernen der syntax.
x = some_long_function(y); something_else_kinda_verbose(x)
ist im Allgemeinen bevorzugt, diese:something_else_kinda_verbose(some_long_function(y))
. (der einzige Grund, warum da ein Semikolon im es, ist, dass ich konnte nicht herausfinden, wie man einen Zeilenumbruch in einem Kommentar, er würde wirklich ein newline. angesichts der Diskussion... ugh.)@
Präfix vorangestellt Dekorateure, oder vielleicht__
um anzugeben, dass eine variable "private" (Art). Ich fühle, dass die Verwendung von_
und__
bricht die zen, dann wieder Guido wahrscheinlich nicht.JavaScript ist entworfen, um zu "schauen, wie C", also Semikolons sind Teil der Kultur. Python-syntax ist anders genug, um nicht machen die Programmierer fühlen sich unwohl, wenn Sie die Semikolons "fehlen".
Die Antwort, warum sehen Sie Sie nicht in Python-code ist: niemand braucht Sie, und der code sieht sauberer aus ohne Sie.
Generell Semikolon ist nur eine tradition. Viele neue Sprachen haben, nur fiel Sie für gute (nimm Python, Ruby, Scala, Go, Groovy, Io zum Beispiel). Programmierer brauchen Sie nicht, weder den Compiler. Wenn Sie eine Sprache können Sie nicht, geben Sie ein zusätzliches Zeichen, das Sie nie gebraucht, Sie werden wollen, nutzen Sie das aus, nicht wahr?
Es ist nur so, dass JavaScript ' s Versuch, diese zu löschen war nicht sehr erfolgreich, und viele bevorzugen die Konvention immer, weil der code dadurch weniger mehrdeutig.
Ist es meist, dass python sieht nichts, wie java und javascript, die führt die Menschen zu behandeln, dass Art und Weise. Es ist sehr einfach, um nicht in Schwierigkeiten geraten mit Semikolons mit javascript (http://mislav.uniqpath.com/2010/05/semicolons/), alles andere ist FUD.