Komma als Trennzeichen vs. Komma als Trennzeichen


13

In diesem Video sagt der Sprecher:

"Einige Leute sind verwirrt darüber, wie Kommas funktionieren. Sie denken, sie sollten eher Trennzeichen als Trennzeichen sein. Jetzt können Sie sie so oder so betrachten."

Ich verstehe den Unterschied zwischen einem Trennzeichen und einem Trennzeichen (falls vorhanden) nicht. Die Implikation in dem Video ist, dass man sie jetzt (wenn nachfolgende Kommas gültig sind) als Begrenzer und nicht als Trennzeichen ansehen kann ...

Bei der fraglichen Sprache handelt es sich übrigens um JavaScript. Nach meinem Verständnis hat das Komma zwei Bedeutungen:

  • als Operator (selten verwendet)
  • als Trennzeichen (in Argument- und Parameterlisten, Array- und Objektliteralen usw.)

Ich bin nicht sicher, wie ein Komma-Trennzeichen in dieses passt ...


2
Warum ist das wichtig?
jfriend00

7
@ jfriend00 Wenn es einen Unterschied zwischen den Begriffen Trennzeichen und Trennzeichen gibt, möchte ich es wissen ... Ich möchte :)
Šime Vidas

3
@ jfriend00 Video ansehen. Wenn die IE-Leute nicht so eng denken würden wie Sie, hätten wir vielleicht noch keine Javascript-Portabilität snafu ...
yannis

3
@ ŠimeVidas Gute Frage. Übrigens spricht Douglas Crockford, leitender JavaScript-Architekt bei Yahoo, bekannt für die Popularisierung von JSON und Autor von JavaScript: The Good Parts . Es ist eine gute Idee, dass Sie auf Details achten, besonders wenn Sie sich ein Crockford-Video ansehen, da er selten den Atem für Dinge verschwendet, die keine Rolle spielen.
Yannis

1
@ YannisRizos Ja, ich kenne Crockford. Er ist ein großartiger Erzieher. :)
Šime Vidas

Antworten:


15

Wenn Sie das Komma als Trennzeichen betrachten, verwenden Sie ein Komma zwischen zwei Elementen einer Sequenz, um sie zu trennen. Wenn Sie es als Trennzeichen betrachten, setzen Sie es hinter jedes Element, um anzugeben, wo ein Element endet. Siehe die folgenden Beispiele:

Komma als Trennzeichen

var myCars = ["Saab", "Volvo", "BMW" ];

Komma als Trennzeichen

var myCars = ["Saab", "Volvo", "BMW", ];

Ich denke, das Video sagt, dass man sich Kommas sowohl als Trennzeichen als auch als Trennzeichen vorstellen kann, da beide obigen Array-Beispiele gültig sind. Andererseits können Sie in Javascript nur das Komma als Trennzeichen in der Parameterliste einer Funktion verwenden, z

foo(a, b, c) // separator, OK

ist gültig während

foo(a, b, c,) // delimiter, NOT OK!

ist ungültig.

BEARBEITEN

Soweit ich weiß, ist ein Trennzeichen laut Wikipedia ein Sonderfall eines Trennzeichens , nämlich eines Trennzeichens , das zwischen den verschiedenen Textbereichen eingefügt wird, deren Grenzen markiert werden müssen. Tatsächlich werden auf der Wikipedia-Seite durch Kommas getrennte Werte als Beispiel für die Verwendung von Trennzeichen angegeben. Im Allgemeinen können Sie Trennzeichen also auf verschiedene Arten verwenden: davor und danach auf beiden Seiten des zu markierenden Textabschnitts.

Der Grund, warum ich das Trennzeichen als "Markierung, die nach einem Element gesetzt wird" im Javascript-Kontext interpretierte , war das Array-Literal-Beispiel, das auch für C, C ++ und Java gültig ist (ich glaube, ich habe mindestens eine Frage zu gesehen) Stapelüberlauf zu diesem Thema).

Ein weiteres Beispiel für eine ähnliche, aber unterschiedliche Verwendung eines Zeichens ist das Semikolon als Anweisungsbegrenzer (C, C ++, Java, Ada, ...) und als Anweisungstrenner (Pascal). Deshalb

if (a > 0)
    printf("Positive\n");
else
    printf("Non positive\n");

ist korrekter C-Code, wohingegen

IF a > 0 THEN
    WriteLn('Positive'); (* Syntax error here! *)
ELSE
    WriteLn('Non positive');

ist kein korrekter Pascal-Code.

Vielleicht wäre ein Terminator ein besserer / weniger mehrdeutiger Begriff als ein Trennzeichen ? ZB könnte man das Zitat wie folgt formulieren: "Manche Leute sind verwirrt darüber, wie Kommas funktionieren. Sie denken, sie sollten eher Elementterminatoren als Elementtrennzeichen sein . Jetzt können Sie (in vielen Fällen) so oder so über sie nachdenken."


Ja, in Parameterlisten muss das Komma als Trennzeichen verwendet werden, während in Array-Literalen das Komma entweder als Trennzeichen oder als Trennzeichen verwendet werden kann. Oder für Laien: Sie können nach dem letzten Array-Element ein Komma setzen, müssen es aber nicht.
Šime Vidas

Während Ihre Antwort das Zitat aus meiner Frage recht gut erklärt, enthält die Wikipedia-Seite für "Delimiter" unterschiedliche Definitionen. Gemäß diesem Artikel gibt ein Begrenzer die Grenze zwischen Regionen an. Das Beispiel "Komma als Trennzeichen" aus Ihrer obigen Frage wird also als Komma-Feld-Trennzeichen bezeichnet, während das Beispiel "Komma als Trennzeichen" auf dieser Wiki-Seite nirgends dargestellt wird.
Šime Vidas

@ Šime Vidas - Wikipedia ist nur eine Referenz wie jede andere Referenz, es ist nicht die einzige Referenz.
Michael Riley - AKA Gunny

@CapeCodGunny Ja, ich weise nur darauf hin, dass es konfrontierende Definitionen gibt. Ich würde mir auch Definitionen aus anderen Referenzen wünschen.
Šime Vidas

7

Ein Trennzeichen wird zwischen zwei Werte gesetzt und trennt diese.

one,two,three

Ein Begrenzer würde ein Feld begrenzen - es wäre auf beiden Seiten.

,one,two,three,

Auf diese Weise macht es wenig Unterschied, solange man die einzelnen Felder herausziehen kann.

Dies ist ein völlig anderes Problem als die Verwendung eines Kommas in einer Programmiersprache wie Javascript. Es geht um das Abgrenzen / Trennen von Werten innerhalb eines Strings.


1
Ah ja, das macht Sinn.
Šime Vidas

Ich bin mit Ihrer Begrenzererklärung nicht einverstanden. Nach Ihrer Erklärung wäre es eins, zwei, drei, jetzt ist das Trennzeichen auf beiden Seiten.
Michael Riley - AKA Gunny

1
@CapeCodGunny - Sie interpretieren falsch. Das Beispiel, das ich gegeben habe, hat ein Komma vor und nach jedem Wert. Die Kommas, die nicht ganz am Anfang und Ende der Zeichenfolge stehen, dienen als Endbegrenzer und Startbegrenzer.
Oded

@Oded Dieser Wikipedia-Artikel enthält verschiedene Definitionen. Demnach wäre Ihr erstes Beispiel ein Feldbegrenzer, während Ihr zweites Beispiel in diesem Artikel überhaupt nicht dargestellt wird.
Šime Vidas

1
Achtung! var myNumbers = ['one','two','three', ];(Komma am Ende) würde eine Arraylänge von 3 ergeben, aber wegen eines Kommas in der Front var myNumbers = [,'one','two','three'];ergibt sich eine Länge von 4.
RBT
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.