Sind doppelte und einfache Anführungszeichen in JavaScript austauschbar?

Lesezeit: 9 Minuten

Betrachten Sie die folgenden zwei Alternativen:

  • console.log("double");
  • console.log('single');

Ersteres verwendet doppelte Anführungszeichen um die Zeichenfolge, während letzteres einfache Anführungszeichen um die Zeichenfolge verwendet.

Ich sehe immer mehr JavaScript-Bibliotheken, die beim Umgang mit Zeichenfolgen einfache Anführungszeichen verwenden.

Sind diese beiden Verwendungen austauschbar? Wenn nicht, gibt es einen Vorteil, einen gegenüber dem anderen zu verwenden?

  • was ist leichter zu lesen? alert(“Es ist Spielzeit”); or alert(‘Es ist Spielzeit’);

    – Ryan Miller

    9. Juni 2011 um 16:10 Uhr


  • Wie wäre es mit diesem Ryan? alert("It's \"game\" time."); oder alert('It\'s "game" time.');?

    – Francisc

    11. Oktober 2011 um 18:37 Uhr


  • Wenn immer einfache Anführungszeichen verwendet werden und gelegentlich doppelte Anführungszeichen, wo das Literal einfache Anführungszeichen enthält, müssen wir viel weniger Umschalttasten tippen, und unser linker kleiner Finger wird uns Segen geben. Aber ja, wie @arne sagte, für JSON sollten doppelte Anführungszeichen verwendet werden.

    – IsmailS

    31. Oktober 2011 um 15:46 Uhr

  • Einfache Anführungszeichen sind einfacher, wenn Sie sich auf einer europäischen Tastatur befinden (doppeltes Anführungszeichen ist Umschalt + 2, was nicht so süß ist, wie bequem mit Ihrem rechten kleinen Finger auf eine einzelne Taste zu tippen).

    – Arne

    25. April 2012 um 20:46 Uhr

  • @Arne Es gibt keine “europäische Tastatur”. Bsp die Deutsche Tastatur erfordert Verschiebung für beide Arten von Anführungszeichen. (Aber einfache Anführungszeichen sind einfacher.)

    – ANeves

    18. Juni 2012 um 15:53 ​​Uhr

Bei JSON ist zu beachten, dass streng genommen JSON-Strings in doppelte Anführungszeichen gesetzt werden müssen. Sicher, viele Bibliotheken unterstützen auch einfache Anführungszeichen, aber ich hatte große Probleme in einem meiner Projekte, bevor ich feststellte, dass das einfache Anführungszeichen eines Strings tatsächlich nicht den JSON-Standards entspricht.

  • Dies ist sehr relevant, wenn Sie mit jQuery.ajax arbeiten, das einen ASP.NET-Dienst (Webdienst, Seitenmethode oder MVC) aufruft.

    – Schmuli

    3. März 2011 um 11:46 Uhr

  • Die Eigenschaftsnamen innerhalb die JSON-Strings müssen in doppelte Anführungszeichen gesetzt werden, aber ein JSON-String als Ganzes kann in einfache Anführungszeichen gesetzt werden: var jsonString = '{"key1":"value1"}'; (Nicht, dass ich empfehlen würde, JSON manuell zu erstellen.)

    – nnnnn

    9. Februar 2012 um 10:45 Uhr


  • Sie sollten JSON nach Möglichkeit nicht von Hand schreiben .stringify() es.

    – Camilo Martin

    3. Februar 2013 um 2:09 Uhr

  • Das hier ist das beste Argument dafür, immer doppelte Anführungszeichen zu verwenden. JSON sollte doppelte Anführungszeichen enthalten. Die anderen Antworten geben meistens den Rat, “konsequent zu sein”, was bedeutet, wenn ein Teil der Sprache realistischerweise ein doppeltes Anführungszeichen erzwingen könnte, sollten Sie dieses doppelte Anführungszeichen konsequent verwenden.

    – Josh aus Qaribu

    14. Juli 2014 um 16:07 Uhr

  • Dies ist auch relevant, wenn Sie mit mehreren Sprachen arbeiten, wo fast alle anderen Sprachen (Java, C, C++, …) doppelte Anführungszeichen für Zeichenfolgen und einfache Anführungszeichen für Zeichen verwenden. Ich ziehe es vor, überall dieselben Anführungszeichen zu verwenden, und bleibe daher bei doppelten Anführungszeichen für JS. Mit jahrelangem Zehnfingersystem ist die zusätzliche Taste zum Umschalten für doppelte Anführungszeichen völlig irrelevant, und wenn Ihre Codierung durch Ihre Eingabe eingeschränkt ist, müssen Sie das richtige Tippen üben.

    – Lawrence Dol

    24. September 2014 um 17:17 Uhr

  • Ihr erster Punkt zur englischen Sprache ist nicht immer wahr und kann sich je nach Ort/Hauskonvention ändern. Gedruckte Materialien verwenden normalerweise einfache Anführungszeichen für Sprache und verwenden andere Formatierungen für große Blöcke von zitiertem Text. Ihre “umgangssprachliche” Bedeutung ist keine nützliche Definition von Anführungszeichen zur Hervorhebung. Außerdem sind englische Benutzer im Allgemeinen sehr schlecht mit Anführungszeichen und Apostrophen.

    – John Ferguson

    22. Januar 2015 um 13:24 Uhr

  • @JohnFerguson, allein aus diesem Grund kann es wünschenswert sein, doppelte Anführungszeichen zu verwenden, um diese Unterscheidung zu treffen (zwischen Apostrophen und zitierten Passagen).

    – Benutzer1429980

    22. Januar 2015 um 17:24 Uhr

  • Mir geht es um Pragmatismus. Aufgrund der Tatsache, dass 1 von 100 Zeichenfolgen, die ich tippe oder verwende, doppelte Anführungszeichen hat und viele, viele mehr Apostrophe haben, verwende ich doppelte. Letztendlich sollten Sie jedoch den Zitattyp verwenden, der 1) bereits im Projekt verwendet wird, wenn Sie ein neuer Entwickler des Projekts sind, oder 2) den Typ verwenden, der Ihrer Meinung nach sinnvoller ist.

    – Dudewad

    16. November 2015 um 17:43 Uhr


  • Ein typisches Beispiel – was ich gerade eingegeben habe (es gibt mehrere Apostrophe, keine doppelten Anführungszeichen 😉

    – Dudewad

    16. November 2015 um 17:44 Uhr

  • Um den dritten Punkt von @ user1429980 zu ergänzen, bezeichnen einfache Anführungszeichen einen anderen Datentyp in Java und C.

    – Davina Leong

    2. August 2016 um 6:33 Uhr

Einzelzitate

Ich wünschte, doppelte Anführungszeichen wären der Standard, weil sie ein bisschen mehr Sinn machen, aber ich verwende weiterhin einfache Anführungszeichen, weil sie die Szene dominieren.

Einzelzitate:

Keine Präferenz:

Anführungszeichen:

  • Crockford bevorzugt jetzt doppelte Anführungszeichen.

    – Adam Calvet Bohl

    29. September 2016 um 5:16 Uhr

  • Airbnb bevorzugt jetzt doppelte Anführungszeichen

    – Suraj Jain

    12. Januar 2017 um 18:21 Uhr

  • @SurajJain Quelle? Airbnb und Google Styleguides führen immer noch Single als bevorzugt an.

    – Alec Mev

    12. Januar 2017 um 20:37 Uhr

  • @SurajJain Ah, dies sind Code-Style-Checker-Konfigurationen, die in JSON geschrieben sind und überhaupt keine einfachen Anführungszeichen zulassen. Sie zu lesen ist eine gute Möglichkeit, die Entscheidungen zu vergleichen, die von verschiedenen Projekten getroffen wurden.

    – Alec Mev

    13. Januar 2017 um 9:38 Uhr

  • Google bevorzugt jetzt einfache Anführungszeichen

    – GabrielOshiro

    7. März 2019 um 19:19 Uhr

Abschnitt 7.8.4 des Spezifikation beschreibt die wörtliche Zeichenkettennotation. Der einzige Unterschied besteht darin, dass DoubleStringCharacter “SourceCharacter, aber nicht in doppelte Anführungszeichen” und SingleStringCharacter “SourceCharacter, aber nicht in einfache Anführungszeichen” gesetzt ist. Also die nur Unterschied kann so demonstriert werden:

'A string that\'s single quoted'

"A string that's double quoted"

Es hängt also davon ab, wie viel Zitat-Escape Sie tun möchten. Das Gleiche gilt natürlich auch für doppelte Anführungszeichen in Strings mit doppelten Anführungszeichen.

  • Crockford bevorzugt jetzt doppelte Anführungszeichen.

    – Adam Calvet Bohl

    29. September 2016 um 5:16 Uhr

  • Airbnb bevorzugt jetzt doppelte Anführungszeichen

    – Suraj Jain

    12. Januar 2017 um 18:21 Uhr

  • @SurajJain Quelle? Airbnb und Google Styleguides führen immer noch Single als bevorzugt an.

    – Alec Mev

    12. Januar 2017 um 20:37 Uhr

  • @SurajJain Ah, dies sind Code-Style-Checker-Konfigurationen, die in JSON geschrieben sind und überhaupt keine einfachen Anführungszeichen zulassen. Sie zu lesen ist eine gute Möglichkeit, die Entscheidungen zu vergleichen, die von verschiedenen Projekten getroffen wurden.

    – Alec Mev

    13. Januar 2017 um 9:38 Uhr

  • Google bevorzugt jetzt einfache Anführungszeichen

    – GabrielOshiro

    7. März 2019 um 19:19 Uhr

Ich würde gerne sagen, dass der Unterschied rein stilistisch ist, aber ich habe wirklich meine Zweifel. Betrachten Sie das folgende Beispiel:

/*
    Add trim() functionality to JavaScript...
      1. By extending the String prototype
      2. By creating a 'stand-alone' function
    This is just to demonstrate results are the same in both cases.
*/

// Extend the String prototype with a trim() method
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
};

// 'Stand-alone' trim() function
function trim(str) {
    return str.replace(/^\s+|\s+$/g, '');
};

document.writeln(String.prototype.trim);
document.writeln(trim);

In Safari, Chrome, Opera und Internet Explorer (getestet in InternetExplorer 7 und InternetExplorer 8), wird Folgendes zurückgegeben:

function () {
    return this.replace(/^\s+|\s+$/g, '');
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

Firefox liefert jedoch ein etwas anderes Ergebnis:

function () {
    return this.replace(/^\s+|\s+$/g, "");
}
function trim(str) {
    return str.replace(/^\s+|\s+$/g, "");
}

Die einfachen Anführungszeichen wurden durch doppelte Anführungszeichen ersetzt. (Beachten Sie auch, wie das einrückende Leerzeichen durch vier Leerzeichen ersetzt wurde.) Dies erweckt den Eindruck, dass mindestens ein Browser JavaScript intern parst, als ob alles mit doppelten Anführungszeichen geschrieben wäre. Man könnte meinen, Firefox braucht weniger Zeit, um JavaScript zu parsen, wenn alles bereits nach diesem ‘Standard’ geschrieben ist.

Was mich übrigens zu einem sehr traurigen Panda macht, da ich denke, dass einfache Anführungszeichen im Code viel schöner aussehen. Außerdem sind sie in anderen Programmiersprachen normalerweise schneller zu verwenden als doppelte Anführungszeichen, daher würde es nur Sinn machen, wenn dasselbe für JavaScript gelten würde.

Fazit: Ich denke, wir müssen dazu mehr Forschung betreiben.

Dies könnte erklären Testergebnisse von Peter-Paul Koch aus dem Jahr 2003.

Es scheint, dass einfache Anführungszeichen sind manchmal schneller in Explorer Windows (ungefähr 1/3 meiner Tests zeigten eine schnellere Reaktionszeit), aber wenn Mozilla überhaupt einen Unterschied zeigt, verarbeitet es doppelte Anführungszeichen etwas schneller. Ich habe überhaupt keinen Unterschied in Opera gefunden.

2014: Moderne Versionen von Firefox/Spidermonkey tun dies nicht mehr.

  • Wenn es in einem Browser etwas schneller ist, es auf die eine Art und Weise zu tun, und etwas schneller in einem anderen, es auf die andere Weise zu tun, scheint die einzige Anleitung, die wir daraus mitnehmen können, zu sein, dass wir tun sollten, was uns mehr gefällt, weil es einigen weh tun wird Benutzern und helfen anderen, und der Unterschied ist wahrscheinlich nicht wahrnehmbar. “Vorzeitige Optimierung…” und so weiter.

    – Andrew Hedges

    3. Mai 2009 um 6:26 Uhr

  • Es tut mir leid, dass mein Kommentar nicht konstruktiver war. Ich sage nur, dass die Art und Weise, wie der Browser seine interne Darstellung der Syntax anzeigt, wahrscheinlich sehr wenig damit zu tun hat, wie sie analysiert wird, und daher wahrscheinlich kein Grund ist, eine Art von Anführungszeichen der anderen vorzuziehen. Leistungsdaten, die die Analysezeiten für einfache und doppelte Anführungszeichen in verschiedenen Browsern vergleichen, wären dagegen überzeugender.

    – Chris Calo

    14. Januar 2012 um 5:44 Uhr

  • Dies ist eine großartige Antwort, eine Pause von den anderen, die nur zwitschern: “Sie sind gleich, sie sind gleich” … Sie sagten „Außerdem sind sie in anderen Programmiersprachen normalerweise schneller zu verwenden als doppelte Anführungszeichen.“, Darf ich fragen in welchen Sprachen? Ich habe reguläre Sprachen wie Java und C # verwendet und nie eine andere als JS gesehen, die Zeichenfolgenliterale in einfachen Anführungszeichen akzeptiert. Die einfachen Anführungszeichen werden normalerweise nur für Zeichenkonstanten verwendet (nur ein Zeichen erlaubt).

    – ADTC

    27. November 2012 um 7:03 Uhr

  • AFAIK wurde dies in Firefox 17 behoben, Firefox hat dabei früher eine Dekompilierung durchgeführt .toString aber jetzt gibt es die ursprüngliche Kopie zurück. Modernes Firefox wird dieses Problem nicht haben.

    – Benjamin Grünbaum

    13. März 2014 um 10:14 Uhr

  • Geschwindigkeitsunterschiede kenne ich nicht. Aber ich möchte anmerken, dass “dies den Eindruck erweckt, dass mindestens ein Browser JavaScript intern analysiert, als ob alles mit doppelten Anführungszeichen geschrieben wäre.” ist Unsinn. Es wurde UNparsed, als ob es mit doppelten Anführungszeichen geschrieben wäre. Das heißt, es hat seine interne Darstellung (die nur die Zeichenfolge speichert, nicht die Anführungszeichen) in eine für Menschen lesbare Version umgewandelt, für die es zufällig einen Satz Anführungszeichen verwendet. Jedenfalls scheint sich dies laut Benjamins Kommentar geändert zu haben.

    – subsub

    11. Oktober 2014 um 8:00 Uhr

1441500cookie-checkSind doppelte und einfache Anführungszeichen in JavaScript austauschbar?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy