Einfache oder doppelte Anführungszeichen ('vs ")

250

Ich habe immer einfache Anführungszeichen verwendet, wenn ich mein HTML von Hand geschrieben habe. Ich arbeite mit viel gerendertem HTML, das immer doppelte Anführungszeichen verwendet. Auf diese Weise kann ich feststellen, ob der HTML-Code von Hand geschrieben oder generiert wurde. Ist das eine gute Idee?

Was ist der Unterschied zwischen den beiden? Ich weiß, dass beide funktionieren und von allen modernen Browsern unterstützt werden, aber gibt es einen echten Unterschied, bei dem einer in verschiedenen Situationen tatsächlich besser ist als der andere?

ctrlShiftBryan
quelle
5
Um die Frage zu beantworten, ob die Verwendung von einfachen oder doppelten Anführungszeichen als Mittel zur Bestimmung von handgeschriebenem oder generiertem HTML verwendet wird, ist dies wahrscheinlich keine gute Idee. Während inkonsistenter Code (der an einigen Stellen einfach und an anderen doppelt verwendet wird) wahrscheinlich handgeschrieben ist, verwenden sicher viele Leute (einschließlich ich) überall doppelte Anführungszeichen, aber unser Code ist sicherlich nicht computergeneriert. )
Doktor J
@ Aitos Antwort ist in der Tat richtig und sollte akzeptiert werden ... Ich persönlich verwende einfache Anführungszeichen für kurze Attribute wie einzelne Schlüsselwörter / Tags, URLs und Referenzen. alles, was eigentlich nicht vom Menschen gelesen werden soll. Für längere Texte oder alles, was Leerzeichen oder einfache Anführungszeichen / Apostrophe enthalten könnte, verwende ich als Inhalt doppelte Anführungszeichen. Es ist nur eine Frage Ihres Stils (oder des
Styleguides, den
1
Schauen Sie sich 10 wichtige Websites an und sehen Sie, was die meisten von ihnen verwenden, wie Stackoverflow, Youtube / Google, Wikipedia. Bisher habe ich Probleme, wichtige Websites zu finden, die einfache Anführungszeichen verwenden.
Timo Huovinen

Antworten:

391

Die w3-Organisation sagte :

Standardmäßig erfordert SGML, dass alle Attributwerte entweder durch doppelte Anführungszeichen (ASCII-Dezimalzahl 34) oder durch einfache Anführungszeichen (ASCII-Dezimalzahl 39) getrennt werden. Einfache Anführungszeichen können in den Attributwert aufgenommen werden, wenn der Wert durch doppelte Anführungszeichen begrenzt ist, und umgekehrt. Autoren können auch numerische Zeichenreferenzen verwenden, um doppelte Anführungszeichen ( ") und einfache Anführungszeichen ( ') darzustellen . Für doppelte Anführungszeichen können Autoren auch die Zeichenentitätsreferenz verwenden ".

Also ... scheint kein Unterschied zu sein. Kommt nur auf deinen Stil an.

Aito
quelle
38
und wenn Sie konsistent sind (entweder mit 'oder "), führt dies höchstwahrscheinlich zu höheren Komprimierungsraten, wenn Sie komprimierte (gzip, deflate) Seiten
bereitstellen
2
@Aito, das ist für SGML. Für HTML müssen nicht alle Attributwerte abgegrenzt werden
Pacerier
4
Ich schlage vor, obwohl Single über Double - Warum zwei verwenden, wenn man den Job machen kann.
Ujjwal Singh
7
@ JohnHunt: Habe gerade einen kurzen Test mit einer 1823-Byte-JS-Datei (einem zufälligen Backbone-Modell aus einer zufälligen Anwendung) durchgeführt. Die gzip-Ausgabe, wenn alle Anführungszeichen gleich sind (entweder 'oder "), betrug 809 Bytes. Durch das Mischen wurde die Ausgabe auf 829 Byte erhöht. Dies mag für Sie irrelevant sein, aber das bedeutet nicht, dass es für alle irrelevant ist.
Cherouvim
3
Wenn man zu hundert "wahrscheinlich irrelevanten" Dingen sagt "Oh, es ist so ein geringes Potenzial, wahrscheinlich irrelevant", kommt es zum Tod von tausend Nadeln. Mit angemessenem Aufwand lohnt es sich, IMO zu speichern.
sagt, ich bin richtig
67

Ich benutze es "als Top-Tier und 'als Second-Tier, wie ich mir die meisten Leute vorstelle. Beispielsweise

<a href="#" onclick="alert('Clicked!');">Click Me!</a>

In diesem Beispiel müssen Sie beide verwenden, dies ist unvermeidlich.

NibblyPig
quelle
38
Ich mache das auch, aber es kann vermieden werden, wenn Sie vermeiden, Javascript in HTML einzufügen.
Cherouvim
4
Es gibt andere Situationen ohne Inline-Javascript, in denen möglicherweise einfache Anführungszeichen erforderlich sind, z. B. bei Verwendung benutzerdefinierter data-*Attribute. Abhängig von Ihrer Anwendung und der Verwendung der data-*Attribute müssen Sie möglicherweise ''s in "' s verwenden. Manchmal verwenden wir sie für Google Analytics Event Tracking:<a href="..." data-track="Homepage Banner|Clicked|Dick's Sporting Goods">click me</a>
Jake Wilson
3
Betrachten Sievar x = "<a href='" + url + "'>click me</a>";
NibblyPig
4
Kann so leicht vermieden werden: <a onclick="alert(\"Clicked!\")">. Dies ist jedoch viel weniger lesbar.
Fabspro
2
Ich bin mir jedoch nicht ganz sicher, ob dies offiziell von SGML und HTML5 unterstützt wird.
Fabspro
26

Angebotskonventionen für Webentwickler

Die kurze Antwort

In HTML ist die Verwendung von einfachen Anführungszeichen (') und doppelten Anführungszeichen (") austauschbar, es gibt keinen Unterschied.

Es wird jedoch Konsistenz empfohlen, daher müssen wir eine Syntaxkonvention auswählen und regelmäßig verwenden.

Die lange Antwort

Die Webentwicklung besteht häufig aus vielen Programmiersprachen. HTML, JS, CSS, PHP, ASP, RoR, Python usw. Aus diesem Grund haben wir viele Syntaxkonventionen für verschiedene Programmiersprachen. Oft folgen uns Gewohnheiten aus einer Sprache in andere Sprachen, auch wenn sie nicht als "richtig" angesehen werden, dh Konventionen kommentieren. Zitierkonventionen fallen für mich ebenfalls in diese Kategorie.

Aber ich neige dazu, HTML in Verbindung mit PHP eng zu verwenden. Und in PHP gibt es einen großen Unterschied zwischen einfachen und doppelten Anführungszeichen. In PHP mit doppelten Anführungszeichen "können Sie Variablen direkt in den Text der Zeichenfolge einfügen". (scriptingok.com) Und wenn Sie einfache Anführungszeichen verwenden, "erscheint der Text so wie er ist". (scriptingok.com)

PHP benötigt länger, um Zeichenfolgen in doppelten Anführungszeichen zu verarbeiten . Da der PHP-Parser die gesamte Zeichenfolge im Voraus lesen muss, um eine darin enthaltene Variable zu erkennen und zu verketten, dauert die Verarbeitung länger als eine einzelne Zeichenfolge in Anführungszeichen. (scriptingok.com)

 

Einfache Anführungszeichen sind auf dem Server einfacher . Da PHP nicht die gesamte Zeichenfolge im Voraus lesen muss, kann der Server schneller und zufriedener arbeiten. (scriptingok.com)

Andere Dinge zu beachten

  1. Häufigkeit von doppelten Anführungszeichen innerhalb einer Zeichenfolge. Ich stelle fest, dass ich in meinen Zeichenfolgen häufiger doppelte Anführungszeichen (") als in einfachen Zeichenfolgen (') in Zeichenfolgen verwenden muss. Um die Anzahl der erforderlichen Zeichenüberschreitungen zu verringern, bevorzuge ich Trennzeichen in einfachen Anführungszeichen.
  2. Es ist einfacher, ein einfaches Zitat zu erstellen. Dies ist ziemlich selbsterklärend, aber um zu verdeutlichen, warum Sie die UMSCHALTTASTE öfter drücken müssen, als Sie müssen.

Mein Konvent

Mit diesem Verständnis von PHP habe ich die Konvention (für mich und den Rest meines Unternehmens) festgelegt, dass Zeichenfolgen für die Serveroptimierung standardmäßig als einfache Anführungszeichen dargestellt werden sollen. Innerhalb der Zeichenfolge werden doppelte Anführungszeichen verwendet, wenn Anführungszeichen erforderlich sind, z. B. JavaScript innerhalb eines Attributs, z. B.:

<button onClick='func("param");'>Press Me</button>

Wenn wir in PHP sind und möchten, dass der Parser PHP-Variablen innerhalb der Zeichenfolge verarbeitet, sollten wir natürlich absichtlich doppelte Anführungszeichen verwenden. $a='Awesome'; $b = "Not $a";

Quellen

Einfache Anführungszeichen vs doppelte Anführungszeichen in PHP. (nd). Abgerufen am 26. November 2014 von http://www.scriptingok.com/tutorial/Single-quotes-vs-double-quotes-in-PHP

Dustin Poissant
quelle
3
Es war bekannt, dass der Leistungsunterschied zwischen einfachem und doppeltem Anführungszeichen in PHP null Jahre betrug, bevor Sie diese Frage beantworteten: nikic.github.io/2012/01/09/…
Conor Mancone
1
Sie finden mehr doppelte Anführungszeichen als einfache Anführungszeichen in Ihren Zeichenfolgen? Interessant. Ich kann mich nicht erinnern, wann ich das letzte Mal ein doppeltes Anführungszeichen in meinen Saiten hatte.
Zonker.in.Geneva
Ständig. In den letzten 10 Jahren als Full-Stack-Entwickler musste ich doppelte Anführungszeichen innerhalb einer Zeichenfolge 10x häufiger verwenden als einfache Anführungszeichen. Das häufigste Beispiel für JavaScript ist, dass Attributselektoren NUR mit doppelten Anführungszeichen arbeiten und daher document.querySelector("[name^='myname']")überhaupt nicht funktionieren, solange sie document.querySelector('[name^="myname"]')perfekt funktionieren.
Dustin Poissant
@DustinPoissant WHAAAT ?? Auf welchem ​​Browser?
Herr Lister
14

Wenn es egal ist, ist es vielleicht besser, einfache Anführungszeichen zu verwenden, da die Umschalttaste nicht gedrückt gehalten werden muss. Weniger Tastenanschläge == weniger RSI-Chance.

stko
quelle
2
Nun, zumindest auf dem Layout von Galactic Common. (hush-
hush
1
Was hat das RSI-Risiko und die Anzahl der Tastenanschläge mit Codierungsstandards zu tun?
Dib
so viele Meinungen, dass es keinen Unterschied zwischen einfachen und doppelten Anführungszeichen gibt, sondern nur eine, die klarstellt, dass sich die Anzahl der Tastenanschläge um den Faktor ZWEI unterscheidet. Und wir brauchen viele Zitate. Darf ich mit dem Vorschlag hinzufügen, dass möglicherweise mehr Neuronen erforderlich sind, um die Mustererkennung eines doppelten Anführungszeichens in unserem Gehirn abzufeuern?
Roland
Das gilt nicht für französische Tastaturen.
Tokeeen.com
11

In HTML glaube ich nicht, dass es wichtig ist, ob Sie "oder verwenden ', aber es sollte im gesamten Dokument konsistent verwendet werden.

Meine eigene Verwendung bevorzugt die Verwendung von Attributen / HTML ", während 'stattdessen nur Javascript verwendet wird.

Dies erleichtert mir das Lesen und Überprüfen etwas. Wenn Ihre Verwendung für Sie sinnvoller ist als meine, besteht kein Änderungsbedarf. Aber für mich würde sich Ihr Code unordentlich anfühlen . Es ist persönlich ist alles.

David sagt, Monica wieder einsetzen
quelle
Warum muss es konsequent eingesetzt werden? Nur zur besseren Lesbarkeit?
Zeitplan
Weil es einfacher ist, Fehler auf diese Weise zu vermeiden.
David sagt, Monica am
2
Ich habe oft die Attribute verwenden "als gut, aber andere Male , die ich Code in PHP - Code ich schreibe , wo ich das lieber echo's Gebrauch "ist , um das Parsen zu ermöglichen. Alle HTML-Attribute in diesem Echo sind besser lesbar, wenn Sie ''s verwenden. Sicher ist es nicht konsistent, aber es ist viel einfacher ohne all die Backslashes.
Zeitplan
3
Was auch immer für Sie funktioniert, ist in Ordnung. konsistent zu sein bedeutet nicht "immer X machen", sondern nur "in Situation X so machen", Konsistenz kann kontextsensitiv sein; und wird am besten als solche verwendet.
David sagt, Monica am
9

Der beste Weg ist der, den Google empfiehlt. Doppelte Anführungszeichen: https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Quotation_Marks#HTML_Quotation_Marks

Siehe https://google.github.io/styleguide/htmlcssguide.xml?showone=HTML_Validity#HTML_Validity Zitierter Hinweis von Google: "Die Verwendung von gültigem HTML ist ein messbares Basisqualitätsattribut, das zum Erlernen technischer Anforderungen und Einschränkungen beiträgt und dies sicherstellt ordnungsgemäße HTML-Verwendung. "

Stuart
quelle
Die große Mehrheit der Websites, auf die ich bisher gestoßen bin, einschließlich Stackoverflow, verwendet doppelte Anführungszeichen. Ich denke, die Konsistenz im gesamten Web ist zum Besseren, daher lautet die richtige Antwort meiner Meinung nach auch "doppelte Anführungszeichen".
Timo Huovinen
2
Aber wieso!? Warum "vorbei '?
San
2
@ San Konsistenz, meistens. Es folgt dem amerikanischen englischen Standard, dass doppelte Anführungszeichen für Anführungszeichen und einfache Anführungszeichen für Unterzitate stehen.
Nielsvh
6

Ich weiß, dass viele Leute nicht zustimmen würden, aber das ist, was ich tue, und ich mag einen solchen Codierungsstil wirklich: Ich verwende eigentlich kein Zitat in HTML, es sei denn, es ist absolut notwendig.

Beispiel:

<form method=post action=#>
<fieldset>
<legend>Register here: </legend>
  <label for=account>Account: </label>
  <input id=account type=text name=account required><br>
  <label for=password>Password: </label>
  <input id=password type=password name=password required><br>
...

Doppelte Anführungszeichen werden nur verwendet, wenn die Attributwerte Leerzeichen enthalten oder was auch immer:

<form class="val1 val2 val3" method=post action=#>
  ...
</form>
Randy Tang
quelle
1
Gibt es einen Grund dafür? Oder genießen Sie einfach "wirklich einen solchen Codierungsstil"?
Bugs Bunny
4
Ohne Anführungszeichen sieht der HTML-Code viel sauberer aus (und die Dateigröße ist etwas kleiner). Das ist der einzige Grund und sonst nichts. Außerdem kann ich wirklich nicht verstehen, dass jedes Attribut Anführungszeichen haben muss. Warum kann es nicht einfach weggelassen werden, um den Ärger zu retten? Sogar w3.org akzeptiert nicht zitierte Attributwerte ( w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted ). Einfach ist besser als komplex. Ist es eine Art Religion, Zitate zu haben?
Randy Tang
5
Nein, keine Religion, die mir bekannt ist. Ich bin schon seit einiger Zeit mit HTML beschäftigt und habe Ihren Stil noch nie zuvor gesehen ... deshalb habe ich gefragt.
Bugs Bunny
1
Außerdem entfernen HTML-Minifahrer unnötige Anführungszeichen.
Nimrod
2
Das Problem beim Auslassen von Anführungszeichen um Attributwerte besteht darin, dass unterschiedliche Standards unterschiedliche Listen von Zeichen enthalten, die in Anführungszeichen gesetzt werden müssen. Zum Beispiel sagte HTML4, dass nur Werte, die aus Buchstaben, Ziffern, Bindestrichen und Punkten bestehen, nicht in Anführungszeichen gesetzt werden könnten, aber HTML5 sagt, dass alles außer Leerzeichen und "'` <=> "geht. Sie sollten also vorsichtig sein, insbesondere bei älteren Browsern!
Mr Lister
5

Verwenden von doppelten Anführungszeichen für HTML

dh

<div class="colorFont"></div>

Verwenden von einfachen Anführungszeichen für JavaScript

dh

$('#container').addClass('colorFont');
$('<div class="colorFont2></div>');
Alan Dong
quelle
2

Ich hatte ein Problem mit Bootstrap, bei dem die Verwendung von doppelten Anführungszeichen im Vergleich zur Verwendung von einfachen Anführungszeichen eine Rolle spielte (was nicht funktionierte). class = 'row-fluid' gab mir Probleme, die dazu führten, dass die letzte Spanne unter die anderen Bereiche fiel, anstatt ganz rechts schön daneben zu sitzen, während class = "row-fluid" funktionierte.

MikeP
quelle
1

Wenn Sie asp.net schreiben, müssen Sie gelegentlich doppelte Anführungszeichen in Eval-Anweisungen und einfache Anführungszeichen zum Abgrenzen der Werte verwenden. Dies dient hauptsächlich dazu, dass der C # -Inline-Code weiß, dass er eine Zeichenfolge im eval-Container anstelle eines Zeichens verwendet. Persönlich würde ich nur das eine oder andere als Standard verwenden und sie nicht mischen, es sieht chaotisch aus, das ist alles.

Mauro
quelle
1

Verwenden von "anstelle von" wann:

<input value="user"/> //Standard html
<input value="user's choice"/> //Need to use single quote
<input onclick="alert('hi')"/> //When giving string as parameter for javascript function

Verwenden von 'anstelle von "wann:

<input value='"User"'/> //Need to use double quote
var html = "<input name='username'/>" //When assigning html content to a javascript variable
a1204773
quelle
3
In Ihrem Fall von "Zuweisen von HTML-Inhalten do js variable" ziehe ich normalerweise das Gegenteil vor: var html = '<input name="username" />';und halte die Konsistenz mit dem Rest von HTML :)
Erenor Paz
1

Es macht keinen Unterschied zum HTML, aber wenn Sie HTML dynamisch mit einer anderen Programmiersprache generieren, ist eine Möglichkeit möglicherweise einfacher als eine andere.

In Java wird beispielsweise das doppelte Anführungszeichen verwendet, um den Anfang und das Ende eines Strings anzugeben. Wenn Sie also ein doppeltes Anführungszeichen in den String einfügen möchten, müssen Sie es mit einem Backslash maskieren.

String s = "<a href=\"link\">a Link</a>"

Sie haben kein solches Problem mit dem einfachen Anführungszeichen, daher sorgt die Verwendung des einfachen Anführungszeichens für besser lesbaren Code in Java.

String s = "<a href='link'>a Link</a>"

Vor allem, wenn Sie HTML-Elemente mit vielen Attributen schreiben müssen. (Hinweis: Ich verwende normalerweise eine Bibliothek wie jhtml, um HTML in Java zu schreiben, aber dies ist nicht immer praktisch.)

Paul Taylor
quelle
Habe zwei Praktika auf Servlets gemacht. Ich analysierte meinen Code und begann erst jetzt, die Realität anhand von doppelten Anführungszeichen, einfachen Anführungszeichen und Verkettungen von Zeichenfolgen zu erkennen. Die Website, auf der ich studierte, verwendete doppelte Anführungszeichen in HTML und einfache Anführungszeichen in Java. Ich habe es nicht einmal bemerkt. Ich bin froh, dass ich es endlich verstanden habe ...
Michael
0

Ich bin ein Neuling hier, aber ich verwende nur einfache Anführungszeichen, wenn ich im ersten Anführungszeichen doppelte Anführungszeichen verwende. Wenn ich nicht klar bin, zeige ich Ihnen Beispiel:

<p align="center" title='One quote mark at the beginning so now I can
"cite".'> ... </p>

Ich hoffe ich habe geholfen.

Marcin C.
quelle
-5

In PHP führt die Verwendung von doppelten Anführungszeichen zu einer leichten Leistungsminderung, da Variablennamen ausgewertet werden. In der Praxis verwende ich beim Schreiben von Code immer einfache Anführungszeichen:

echo "This will print you the value of $this_variable!";
echo 'This will literally say $this_variable with no evaluation.';

Sie können dies also stattdessen schreiben.

echo 'This will show ' . $this_variable . '!';

Ich glaube, dass Javascript ähnlich funktioniert, also eine sehr kleine Verbesserung der Leistung, wenn das für Sie wichtig ist.


Wenn Sie bis zur HTML-Spezifikation 2.0 schauen, werden alle hier aufgeführten Tags angezeigt.

W3 HTML DTD Referenz

(Verwenden Sie doppelte Anführungszeichen.) Konsistenz ist wichtig, unabhängig davon, welche Sie häufiger verwenden.

Raiden
quelle
13
JavaScript wertet Variablennamen in Zeichenfolgen nicht aus. Es gibt keinen Unterschied zwischen 'und "in JavaScript.
John Mellor
-9

Doppelte Anführungszeichen werden für Zeichenfolgen verwendet (dh "dies ist eine Zeichenfolge") und einfache Anführungszeichen werden für ein Zeichen verwendet (dh "a", "b" oder "c"). Abhängig von der Programmiersprache und dem Kontext können Sie doppelte Anführungszeichen für ein Zeichen verwenden, jedoch keine einfachen Anführungszeichen für eine Zeichenfolge.

HTML ist es egal, welches Sie verwenden. Wenn Sie jedoch HTML in ein PHP-Skript schreiben, sollten Sie sich an doppelte Anführungszeichen halten, da Sie diese umgehen müssen (dh "was auch immer"), um sich und PHP nicht zu verwechseln.

CD Reimer
quelle
Ich kenne einige Programmiersprachen, aber eine, in der dies zutrifft.
Mikl
1
@mikl allgemeine Praxis in C # und Java ist Strings in doppelten Anführungszeichen und Zeichen in einfachen Anführungszeichen. Dies gibt jedoch keine Bestätigung für diese Antwort. Es sei denn, dies ist die Antwort auf eine andere Frage.
Evorlor