Frage Wann sollten doppelte oder einfache Anführungszeichen in JavaScript verwendet werden?


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

Ich sehe mehr und mehr JavaScript-Bibliotheken da draußen mit einfachen Anführungszeichen beim Umgang mit Strings. Was sind die Gründe dafür, einen über den anderen zu verwenden? Ich dachte, sie sind ziemlich austauschbar.


1684


Ursprung


Antworten:


Der wahrscheinlichste Grund für die Verwendung von single vs double in verschiedenen Bibliotheken ist die Präferenz des Programmierers und / oder die Konsistenz der API.

Verwenden Sie, abgesehen davon, dass Sie konsistent sind, das, was am besten zu der Zeichenfolge passt:

Verwenden der anderen Art von Anführungszeichen als Literal:

alert('Say "Hello"');
alert("Say 'Hello'");

... aber das kann kompliziert werden ...

alert("It's \"game\" time.");
alert('It\'s "game" time.');

Eine weitere Option, neu in ES6, sind Vorlagenliterale welche benutzen die back-tick Charakter:

alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);

Vorlagenliterale bieten eine saubere Syntax für: variable Interpolation, mehrzeilige Strings und mehr.


1042



Wenn Sie mit JSON arbeiten, sollten Sie beachten, dass JSON-Strings streng genommen doppelt zitiert 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 einzelne Angeben einer Zeichenkette tatsächlich nicht den JSON-Standards entspricht.


567



Es gibt keine bessere Lösung; Ich möchte jedoch argumentieren, dass doppelte Anführungszeichen manchmal wünschenswerter sein können:

  • Newcomer werden bereits doppelte Anführungszeichen aus ihrer Sprache kennen. Im Englischen müssen wir doppelte Anführungszeichen verwenden " um eine zitierte Textstelle zu identifizieren. Wenn wir ein einfaches Zitat verwenden würden 'kann der Leser es als eine Kontraktion falsch interpretieren. Die andere Bedeutung einer Textstelle, umgeben von der ' zeigt die umgangssprachliche Bedeutung an. Es ist sinnvoll, mit bereits vorhandenen Sprachen konsistent zu bleiben, was das Erlernen und die Interpretation von Code wahrscheinlich erleichtern wird.
  • Doppelte Anführungszeichen beseitigen die Notwendigkeit, Apostrophen zu entkommen (wie in Kontraktionen). Betrachten Sie die Zeichenfolge: "I'm going to the mall", gegenüber der ansonsten maskierten Version: 'I\'m going to the mall'.
  • Doppelte Anführungszeichen bedeuten eine Zeichenfolge in vielen anderen Sprachen. Wenn Sie eine neue Sprache wie Java oder C lernen, werden immer doppelte Anführungszeichen verwendet. In Ruby, PHP und Perl enthalten Strings in einfachen Anführungszeichen keine Backslash-Escapes, während doppelte Anführungszeichen sie unterstützen.

  • Die JSON-Notation ist in Anführungszeichen geschrieben.

Wie jedoch andere festgestellt haben, ist es am wichtigsten, konsequent zu bleiben.


244



Das nur Unterschied zeigt sich im Folgenden:

'A string that\'s single quoted'

"A string that's double quoted"

Es liegt also nur daran, wie viel Zitat Sie entkommen möchten. Offensichtlich gilt das gleiche für doppelte Anführungszeichen in doppelt zitierten Strings.


111



Einzelzitate

Ich wünschte, doppelte Anführungszeichen wären der Standard, weil sie mach ein bisschen mehr Sinn, aber ich benutze immer einzelne Anführungszeichen, weil sie die Szene dominieren.

Einzelzitate:

Keine Präferenz:

Anführungszeichen:


68



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 IE7 und IE8) wird Folgendes zurückgegeben:

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

Firefox wird jedoch ein etwas anderes Ergebnis liefern:

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 der Einbuchtungsraum durch vier Leerzeichen ersetzt wurde.) Dadurch entsteht der Eindruck, dass mindestens ein Browser JavaScript intern analysiert, als ob alles in 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 einzelne Anführungszeichen im Code viel schöner aussehen. Außerdem sind sie in anderen Programmiersprachen in der Regel schneller zu verwenden als doppelte Anführungszeichen. Daher wäre es nur sinnvoll, wenn dies auch für JavaScript gilt.

Fazit: Ich denke, wir müssen mehr darüber recherchieren.

Bearbeiten: Dies könnte erklären Peter-Paul Kochs Testergebnisse von damals im Jahr 2003.

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

Bearbeitung 2014: Moderne Versionen von Firefox / Spidermonkey machen das nicht mehr.


54



Wenn Sie Inline-JavaScript (wohl eine "schlechte" Sache, aber vermeiden Sie diese Diskussion) Single Anführungszeichen sind die einzige Option für String-Literale, glaube ich.

Beispielsweise funktioniert das gut:

<a onclick="alert('hi');">hi</a>

Aber Sie können das "hi" nicht in doppelte Anführungszeichen setzen, über jede mir bekannte Entweder-Methode. Sogar &quot; das wäre meine beste Schätzung gewesen (da Sie Zitate in einem Attributwert von HTML umgehen) funktioniert bei mir nicht in Firefox. \" funktioniert auch nicht, weil Sie zu diesem Zeitpunkt für HTML und nicht für JavaScript entkommen.

Wenn also der Name des Spiels konsistent ist und Sie in einigen Teilen Ihrer App Inline-JavaScript ausführen, sind einfache Anführungszeichen der Gewinner. Bitte korrigieren Sie mich, wenn ich mich irre.


30



Technisch gibt es keinen Unterschied, es ist nur eine Frage von Stil und Konvention.

Douglas Crockford empfiehlt die Verwendung von einfachen Anführungszeichen für interne Zeichenfolgen und Anführungszeichen für externe Zeichen (mit extern sind diejenigen gemeint, die dem Benutzer der Anwendung angezeigt werden, wie Nachrichten oder Warnungen).

Ich persönlich folge dem.

UPDATE: Es scheint, dass Mr. Crockford Änderte seine Meinung und empfiehlt jetzt, doppelte Anführungszeichen zu verwenden :)


29



Genau genommen gibt es keinen Unterschied in der Bedeutung; Die Wahl hängt also von der Bequemlichkeit ab.

Hier sind einige Faktoren, die Ihre Wahl beeinflussen könnten:

  • Hausstil: Einige Gruppen von Entwicklern verwenden bereits eine Konvention oder die andere.
  • Clientseitige Anforderungen: Verwenden Sie Anführungszeichen innerhalb der Strings? (Siehe Adys Antwort).
  • Serverseitige Sprache: VB.Net-Benutzer können einfache Anführungszeichen für Java-Script verwenden, damit die Skripts serverseitig erstellt werden können (VB.Net verwendet doppelte Anführungszeichen für Zeichenfolgen, sodass die Java-Script-Zeichenfolgen leicht zu unterscheiden sind) wenn sie einfache Anführungszeichen verwenden).
  • Bibliothekscode: Wenn Sie eine Bibliothek verwenden, die einen bestimmten Stil verwendet, sollten Sie möglicherweise den gleichen Stil verwenden.
  • Persönliche Präferenz: Sie könnten denken, dass der eine oder andere Stil besser aussieht.

23



Lassen Sie uns sehen, was eine Referenz tut.

Innerhalb von jquery.js wird jede Zeichenfolge doppelt zitiert.

Also, ich fange jetzt mit doppelt zitierten Strings an. (Ich benutzte Single!)


18



Ich hoffe, ich füge nichts Offensichtliches hinzu, aber ich habe mich angestrengt Django und Ajax und JSON dazu.

Angenommen, Sie verwenden in Ihrem HTML-Code doppelte Anführungszeichen, wie es normalerweise sein sollte, dann schlage ich vor, für den Rest einfache Anführungszeichen in JavaScript zu verwenden.

Also stimme ich @ady zu, aber mit etwas Sorgfalt.

Mein Fazit ist: In JavaScript ist es wahrscheinlich egal, aber sobald Sie einbetten In HTML oder ähnlichem fangen Sie an, Probleme zu bekommen. Du solltest wissen was tatsächlich entkommt, liest, übergibt deine Schnur.

Mein einfacher Fall war:

tbox.innerHTML = tbox.innerHTML + '<div class="thisbox_des" style="width:210px;" onmouseout="clear()"><a href="/this/thislist/'
                   + myThis[i].pk +'"><img src="/site_media/'
                   + myThis[i].fields.thumbnail +'" height="80" width="80" style="float:left;" onmouseover="showThis('
                   + myThis[i].fields.left +','
                   + myThis[i].fields.right +',\''
                   + myThis[i].fields.title +'\')"></a><p style="float:left;width:130px;height:80px;"><b>'
                   + myThis[i].fields.title +'</b> '
                   + myThis[i].fields.description +'</p></div>'

Sie können das \ 'im dritten Feld von showThis erkennen.

Das doppelte Zitat hat nicht funktioniert!

Es ist klar, warum, aber es ist auch klar, warum wir einfache Zitate beibehalten sollten ... .. Ich vermute..

Dieser Fall ist eine sehr einfache HTML-Einbettung, der Fehler wurde generiert durch einfaches Kopieren / Einfügen aus einem JavaScript-Code mit doppeltem Anführungszeichen.

Also um die Frage zu beantworten:

Verwenden Sie einfache Anführungszeichen innerhalb von HTML. Es könnte ein paar Debug-Probleme speichern ...


13