console.log("double");
vs. console.log('single');
Ich sehe immer mehr JavaScript-Bibliotheken, die beim Umgang mit Zeichenfolgen einfache Anführungszeichen verwenden. Was sind die Gründe, einen über den anderen zu verwenden? Ich dachte, sie sind ziemlich austauschbar.
javascript
string
conventions
aemkei
quelle
quelle
alert("It's \"game\" time.");
oderalert('It\'s "game" time.');
?Antworten:
Der wahrscheinlichste Grund für die Verwendung von Single vs Double in verschiedenen Bibliotheken ist die Präferenz des Programmierers und / oder die API-Konsistenz. Verwenden Sie nicht nur konsistent, sondern auch das, was am besten zur Saite passt.
Verwenden der anderen Art von Zitat als Literal:
Dies kann kompliziert werden:
Eine weitere neue Option in ES6 sind Vorlagenliterale, die das
back-tick
Zeichen verwenden:Vorlagenliterale bieten eine saubere Syntax für: variable Interpolation, mehrzeilige Zeichenfolgen und mehr.
Beachten Sie, dass JSON formal so angegeben ist, dass doppelte Anführungszeichen verwendet werden. Dies kann je nach Systemanforderungen eine Überlegung wert sein.
quelle
alert('It’s “game” time')
vs.alert("It’s “game” time")
- spielt keine Rolle. Sie würden nur in den (seltenen) Fällen entkommen muß , wo die Einzel- oder Doppel prime Zeichen'
,"
tatsächlich geeignet sind.Wenn Sie mit JSON arbeiten, sollte beachtet werden, dass JSON-Zeichenfolgen genau genommen 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 mir klar wurde, dass das einfache Anführungszeichen einer Zeichenfolge tatsächlich nicht den JSON-Standards entspricht.
quelle
var jsonString = '{"key1":"value1"}';
(Ich empfehle nicht, JSON manuell zu.stringify()
.Es gibt keine bessere Lösung ; Ich möchte jedoch argumentieren, dass doppelte Anführungszeichen manchmal wünschenswerter sein können:
"
, um eine Passage des zitierten Textes zu identifizieren. Wenn wir ein einzelnes Zitat verwenden'
, kann der Leser es als Kontraktion falsch interpretieren. Die andere Bedeutung einer Textpassage, die von der umgeben ist,'
gibt die umgangssprachliche Bedeutung an. Es ist sinnvoll, mit bereits vorhandenen Sprachen konsistent zu bleiben, und dies kann wahrscheinlich das Lernen und Interpretieren von Code erleichtern."I'm going to the mall"
, im Vergleich zur 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 implizieren Zeichenfolgen in einfachen Anführungszeichen keine Backslash-Escapezeichen, während doppelte Anführungszeichen sie unterstützen.
Die JSON-Notation wird in doppelte Anführungszeichen gesetzt.
Dennoch ist es, wie andere gesagt haben, am wichtigsten, konsequent zu bleiben.
quelle
Abschnitt 7.8.4 der Spezifikation beschreibt die Literal-String-Notation. Der einzige Unterschied besteht darin, dass DoubleStringCharacter "SourceCharacter, aber kein doppeltes Anführungszeichen" und SingleStringCharacter "SourceCharacter, aber kein einfaches Anführungszeichen" ist. Der einzige Unterschied kann also folgendermaßen nachgewiesen werden:
Es hängt also davon ab, wie viel Zitat Sie tun möchten. Dies gilt natürlich auch für doppelte Anführungszeichen in doppelten Anführungszeichen.
quelle
"{\"name\": \"Peter\"}"
vs'{"name": "Peter"}'
? Zugegeben, Sie könnten sagen, dass dies der gleiche Unterschied ist, aber es würde Ihre Entscheidung sicherlich anders beeinflussen als im obigen Beispiel.Einzelzitate
Ich wünschte, doppelte Anführungszeichen wären der Standard, weil sie etwas sinnvoller sind , aber ich verwende weiterhin einfache Anführungszeichen, weil sie die Szene dominieren.
Einzelzitate:
Keine Präferenz:
Anführungszeichen:
.eslintrc
)quelle
Ich möchte sagen, dass der Unterschied rein stilistisch ist, aber ich habe wirklich meine Zweifel. Betrachten Sie das folgende Beispiel:
In Safari, Chrome, Opera und Internet Explorer (getestet in IE7 und IE8) wird Folgendes zurückgegeben:
Firefox liefert jedoch ein etwas anderes Ergebnis:
Die einfachen Anführungszeichen wurden durch doppelte Anführungszeichen ersetzt. (Beachten Sie auch, wie der Einrückungsbereich durch vier Leerzeichen ersetzt wurde.) Dies erweckt den Eindruck, dass mindestens ein Browser JavaScript intern analysiert, als ob alles in doppelte Anführungszeichen geschrieben worden wäre. Man könnte meinen, Firefox braucht weniger Zeit, um JavaScript zu analysieren, wenn bereits alles nach diesem 'Standard' geschrieben ist.
Das macht mich übrigens zu einem sehr traurigen Panda, da ich denke, dass einfache Anführungszeichen im Code viel besser aussehen. In anderen Programmiersprachen sind sie normalerweise 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 diesbezüglich mehr Forschung betreiben.
Bearbeiten: Dies könnte die Testergebnisse von Peter-Paul Koch aus dem Jahr 2003 erklären .
Edit 2014: Moderne Versionen von Firefox / Spidermonkey machen das nicht mehr.
quelle
.toString
aber jetzt wird die Originalkopie zurückgegeben. Moderne Firefox wird dieses Problem nicht haben.Wenn Sie Inline-JavaScript verwenden (wohl eine "schlechte" Sache, aber diese Diskussion vermeiden), sind einfache Anführungszeichen Ihre einzige Option für String-Literale, glaube ich.
zB funktioniert das gut:
Aber Sie können das "Hallo" nicht in doppelte Anführungszeichen setzen, und zwar über eine mir bekannte Escape-Methode. Selbst
"
was meine beste Vermutung gewesen wäre (da Sie Anführungszeichen in einem Attributwert von HTML entkommen), funktioniert in Firefox nicht für mich.\"
funktioniert auch nicht, da Sie zu diesem Zeitpunkt auf HTML und nicht auf JavaScript verzichten.Wenn der Name des Spiels also Konsistenz ist und Sie in Teilen Ihrer App Inline-JavaScript verwenden, sind einfache Anführungszeichen der Gewinner. Jemand korrigiert mich bitte, wenn ich falsch liege.
quelle
<a onclick="alert(%22hi%22);">hi</a>
- aus dem Speicher funktioniert dies, obwohl es möglicherweise stattdessen im href-Attribut war<a href="javascript:alert(%22hi%22);">hi</a>
alert("hi")
kein gültiges JavaScript. Werte von Attributen werden jedoch codiert. w3.org/TR/html4/intro/sgmltut.html#didx-attribute"
ist der richtige Weg, um ein doppeltes Anführungszeichen innerhalb eines HTML-Attributs zu umgehen. In Firefox funktioniert es einwandfrei. @Denilson, XML (und damit XHTML) erlaubt sowohl einfache als auch doppelte Anführungszeichen. Siehe dasAttValue
Literal in der XML-Spezifikation unter w3.org/TR/REC-xml/#d0e888 .Technisch gibt es keinen Unterschied, es geht nur um Stil und Konvention.
Douglas Crockford empfiehlt die Verwendung von einfachen Anführungszeichen für interne Zeichenfolgen und doppelten Anführungszeichen für externe Zeichenfolgen (mit extern sind diejenigen zu verstehen, die dem Benutzer der Anwendung angezeigt werden sollen, z. B. Nachrichten oder Warnungen).
Ich persönlich folge dem.
UPDATE: Es scheint, dass Mr. Crockford seine Meinung geändert hat und jetzt empfiehlt, durchgehend doppelte Anführungszeichen zu verwenden :)
quelle
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önnen:
quelle
'
ist00100111
binär, während"
ist00100010
binär. Doppelte Anführungszeichen benötigen daher halb so viel Speicherplatz wie einfache Anführungszeichen. Das ist genau dort der Unterschied.Schauen wir uns an, was eine Referenz bewirkt.
In jquery.js wird jede Zeichenfolge in doppelte Anführungszeichen gesetzt.
Ab jetzt verwende ich Zeichenfolgen in doppelten Anführungszeichen. (Ich habe Single benutzt!)
quelle
Behalten Sie einfach die Konsistenz in dem, was Sie verwenden. Aber lassen Sie Ihren Komfort nicht im Stich.
ES6-Update
Verwenden der Template-Literal-Syntax .
quelle
Es ist meistens eine Frage des Stils und der Vorlieben. Die anderen Antworten enthalten einige interessante und nützliche technische Erkundungen. Vielleicht möchte ich nur ein wenig weltlichen Rat geben.
Wenn Sie in einem Unternehmen oder Team programmieren, ist es wahrscheinlich eine gute Idee, dem "Hausstil" zu folgen.
Wenn Sie alleine ein paar Nebenprojekte Hacking, dann schauen Sie sich einige prominente Persönlichkeiten in der Gemeinde. Nehmen wir zum Beispiel an, Sie betreten Node.js. Schauen Sie sich die Kernmodule an, z. B. underscore.js oder express, und sehen Sie, welche Konvention sie verwenden.
Wenn beide Konventionen ebenso verwendet werden, dann defer auf Ihre persönlichen
Vorlieben.
Wenn Sie keine persönliche Präferenz haben, dann eine Münze.
Wenn du keine Münze hast, dann ist Bier auf mir;)
quelle
Ich hoffe , ich bin nicht etwas offensichtlich Zugabe, aber ich habe mit kämpfen Django und Ajax und JSON zu diesem Thema .
Unter der Annahme, dass Sie in Ihrem HTML-Code wie normalerweise doppelte Anführungszeichen verwenden, empfehle ich dringend, für den Rest in JavaScript einfache Anführungszeichen zu verwenden.
Also stimme ich @ady zu, aber mit einiger Sorgfalt.
Mein Fazit lautet: In JavaScript spielt es wahrscheinlich keine Rolle, aber sobald Sie es in HTML oder ähnliches einbetten, treten Probleme auf. Sie sollten wissen, was tatsächlich entkommt, lesen und Ihre Zeichenfolge übergeben.
Mein einfacher Fall war:
Sie können das \ 'im dritten Feld von showThis erkennen.
Das doppelte Anführungszeichen hat nicht funktioniert!
Es ist klar warum, aber es ist auch klar warum wir uns an einfache Anführungszeichen halten sollten ... Ich denke ...
In diesem Fall handelt es sich um eine sehr einfache HTML-Einbettung. Der Fehler wurde durch einfaches Kopieren / Einfügen aus einem JavaScript-Code in doppelten Anführungszeichen generiert.
Um die Frage zu beantworten:
Versuchen Sie, in HTML einfache Anführungszeichen zu verwenden. Es könnte ein paar Debug-Probleme sparen ...
quelle
Ich bin mir nicht sicher, ob dies in der heutigen Welt relevant ist, aber doppelte Anführungszeichen wurden früher für Inhalte verwendet, bei denen Steuerzeichen verarbeitet werden mussten, und einfache Anführungszeichen für Zeichenfolgen, bei denen dies nicht der Fall war.
Der Compiler führt eine Zeichenfolgenmanipulation für eine Zeichenfolge in doppelten Anführungszeichen aus, während eine Zeichenfolge in einfachen Anführungszeichen buchstäblich unberührt bleibt. Dies führte dazu, dass 'gute' Entwickler sich dafür entschieden, einfache Anführungszeichen für Zeichenfolgen zu verwenden, die keine Steuerzeichen wie
\n
oder\0
(nicht in einfachen Anführungszeichen verarbeitet) und doppelte Anführungszeichen enthielten, wenn die Zeichenfolge analysiert werden musste (mit geringen Kosten in CPU-Zyklen für Verarbeitung der Zeichenfolge).quelle
Wenn Sie jshint verwenden , wird ein Fehler ausgegeben , wenn Sie eine doppelte Anführungszeichenfolge verwenden.
Ich habe es durch das Yeoman-Gerüst von AngularJS verwendet, aber vielleicht gibt es irgendwie eine Möglichkeit, dies zu konfigurieren.
Wenn Sie HTML in JavaScript verarbeiten, ist es übrigens einfacher, einfache Anführungszeichen zu verwenden:
Und zumindest verwendet JSON doppelte Anführungszeichen, um Zeichenfolgen darzustellen.
Es gibt keine triviale Möglichkeit, Ihre Frage zu beantworten
quelle
In Bezug auf die Leistung werden Angebote niemals Ihr Engpass sein, die Leistung ist jedoch in beiden Fällen gleich.
Wenn Sie die Codierungsgeschwindigkeit verwenden
'
und eine Zeichenfolge abgrenzen möchten, müssen Sie"
Anführungszeichen vermeiden. Es ist wahrscheinlicher, dass Sie"
innerhalb der Zeichenfolge verwenden müssen, zum Beispiel:Dann bevorzuge ich die
'
Abgrenzung der Zeichenfolge, damit ich weniger Zeichen maskieren muss.quelle
Ein (dummer) Grund für die Verwendung von einfachen Anführungszeichen wäre, dass Sie nicht die Umschalttaste drücken müssen, um sie einzugeben, wohingegen ein doppeltes Anführungszeichen dies tut. (Ich gehe davon aus, dass für die durchschnittliche Zeichenfolge kein Escapezeichen erforderlich ist. Dies ist eine vernünftige Annahme.) Nehmen wir nun an, ich codiere jeden Tag 200 Codezeilen. Vielleicht habe ich in diesen 200 Zeilen 30 Zitate. Vielleicht dauert das Eingeben eines doppelten Anführungszeichens 0,1 Sekunden länger als das Eingeben eines einfachen Anführungszeichens (weil ich die Umschalttaste drücken muss). Dann verschwende ich an einem bestimmten Tag 3 Sekunden. Wenn ich 40 Jahre lang 200 Tage im Jahr auf diese Weise codiere, habe ich 6,7 Stunden meines Lebens verschwendet. Denkanstöße.
quelle
var description = "This is a \"quick\" test";
on Eine englische Tastatur. Bei einer englischen Tastatur muss sich Ihr kleiner Finger von der linken Umschalttaste zur Q-Taste in der oberen Reihe bewegen, anstatt sich von der A-Taste zur Q-Taste zu bewegen. Mit anderen Worten, er muss die doppelte Strecke zurücklegen Ich bin nicht sicher, wo sich die Tasten auf der deutschen Tastatur befinden, aber ich bin sicher, dass es ein analoges Beispiel gibt.Für einfache Anführungszeichen
Darüber hinaus ist Inline-HTML normalerweise ein Anti-Pattern. Bevorzugen Sie Vorlagen.
Auch hier sollten Sie JSON nicht auf diese Weise erstellen müssen. JSON.stringify () ist oft genug. Wenn nicht, verwenden Sie Vorlagen.
Für doppelte Anführungszeichen
Für beide
In JavaScript gibt es keinen Unterschied zwischen den beiden. Daher können Sie alles verwenden, was im Moment bequem ist. Beispielsweise erzeugen die folgenden Zeichenfolgenliterale alle dieselbe Zeichenfolge:
Einfache Anführungszeichen für interne Zeichenfolgen und doppelte Anführungszeichen für externe. Auf diese Weise können Sie interne Konstanten von Zeichenfolgen unterscheiden, die dem Benutzer angezeigt (oder auf die Festplatte usw. geschrieben) werden sollen. Natürlich sollten Sie vermeiden, Letzteres in Ihren Code aufzunehmen, aber das kann nicht immer getan werden.
quelle
Eine weitere Sache, die Sie als Grund für die Umstellung von doppelten Anführungszeichen auf einfache Anführungszeichen in Betracht ziehen sollten, ist die zunehmende Beliebtheit von serverseitigen Skripten. Bei Verwendung von PHP können Sie Variablen übergeben und Javascript-Funktionen mithilfe von Zeichenfolgen und Variablen in PHP analysieren.
Wenn Sie eine Zeichenfolge schreiben und doppelte Anführungszeichen für Ihr PHP verwenden, müssen Sie sich keinem der einfachen Anführungszeichen entziehen, und PHP ruft automatisch den Wert der Variablen für Sie ab.
Beispiel: Ich muss eine Javascript-Funktion mit einer Variablen von meinem Server ausführen.
Dies erspart mir viel Aufwand beim Verknüpfen von Strings und ich kann effektiv ein Javascript aus PHP aufrufen. Dies ist nur ein Beispiel, aber dies kann einer von mehreren Gründen sein, warum Programmierer standardmäßig einfache Anführungszeichen in Javascript verwenden.
Zitat aus PHP-Dokumenten : "Das wichtigste Merkmal von Zeichenfolgen in doppelten Anführungszeichen ist die Tatsache, dass Variablennamen erweitert werden. Weitere Informationen finden Sie unter String-Analyse."
quelle
Es gibt Leute, die behaupten, Leistungsunterschiede zu sehen: alter Mailinglisten-Thread . Aber ich konnte keinen von ihnen finden, der bestätigt werden konnte.
Die Hauptsache ist, zu prüfen, welche Art von Anführungszeichen (doppelt oder einfach) Sie in Ihrer Zeichenfolge verwenden. Es hilft, die Anzahl der Fluchten niedrig zu halten. Wenn Sie beispielsweise mit HTML in Ihren Zeichenfolgen arbeiten, ist es einfacher, einfache Anführungszeichen zu verwenden, damit Sie nicht alle doppelten Anführungszeichen um die Attribute herum umgehen müssen.
quelle
Ich würde doppelte Anführungszeichen verwenden, wenn einfache Anführungszeichen nicht verwendet werden können und umgekehrt:
Anstatt:
quelle
In JavaScript gibt es keinen Unterschied zwischen einfachen und doppelten Anführungszeichen.
Spezifikation ist wichtig:
Möglicherweise gibt es Leistungsunterschiede, aber diese sind absolut minimal und können sich je nach Implementierung des Browsers täglich ändern. Weitere Diskussionen sind zwecklos, es sei denn, Ihre JavaScript-Anwendung ist hunderttausend lang.
Es ist wie ein Maßstab, wenn
ist schneller als
(zusätzliche Leerzeichen)
heute in einem bestimmten Browser und einer bestimmten Plattform usw.
quelle
Bei Verwendung von CoffeeScript verwende ich doppelte Anführungszeichen. Ich bin damit einverstanden, dass Sie eine auswählen und dabei bleiben. Mit CoffeeScript können Sie interpolieren, wenn Sie doppelte Anführungszeichen verwenden.
ES6 verwendet Back Ticks (`) für Vorlagenzeichenfolgen. Das hat wahrscheinlich einen guten Grund, aber beim Codieren kann es umständlich sein, das Zeichenfolgenliteralzeichen von Anführungszeichen oder doppelten Anführungszeichen in Back-Ticks zu ändern, um die Interpolationsfunktion zu erhalten. CoffeeScript ist möglicherweise nicht perfekt, aber es ist eine nette Funktion, überall das gleiche Zeichenfolgenliteralzeichen (doppelte Anführungszeichen) zu verwenden und immer interpolieren zu können.
quelle
Wenn Sie zwischen JavaScript und C # hin und her springen, trainieren Sie am besten Ihre Finger für die übliche Konvention, bei der es sich um doppelte Anführungszeichen handelt.
quelle
Ich habe die folgenden ungefähr 20 Mal ausgeführt. Und es scheint, dass doppelte Anführungszeichen etwa 20% schneller sind.
Der lustige Teil ist, wenn Sie Teil 2 und Teil 1 ändern, sind einfache Anführungszeichen etwa 20% schneller.
quelle
var dummy_date = new Date()
zum Anfang hinzufügenEs gibt absolut keinen Unterschied, daher ist es meistens eine Frage des Geschmacks und des Inhalts der Zeichenfolge (oder ob sich der JS-Code selbst in einer Zeichenfolge befindet), die Anzahl der Escapezeichen gering zu halten.
Die Geschwindigkeitsunterschiedslegende könnte aus der PHP-Welt stammen, in der sich die beiden Anführungszeichen unterschiedlich verhalten.
quelle
Nachdem ich alle Antworten gelesen habe, die besagen, dass es möglicherweise schneller ist oder Vorteile hat, würde ich sagen, dass doppelte Anführungszeichen besser oder auch schneller sind, da der Google Closure Compiler einfache Anführungszeichen in doppelte Anführungszeichen konvertiert.
quelle
Jetzt, da es 2020 ist, sollten wir eine dritte Option für Javascript in Betracht ziehen: Das einzelne Backtick für alles.
Dies kann überall anstelle von einfachen oder doppelten Anführungszeichen verwendet werden.
Es ermöglicht Ihnen, alle Dinge zu tun!
Es erlaubt mehrere Zeilen: `
Diese
Macht
Javascript
Besser!
`
Es verursacht auch keinen Leistungsverlust, wenn die anderen beiden ersetzt werden: https://medium.com/javascript-in-plain-english/are-backticks-slower-than-other-strings-in-javascript-ce4abf9b9fa
quelle
Wenn Ihre JS-Quelle ist:
Die HTML-Quelle lautet:
oder für HTML5
JS erlaubt solche Arrays:
Aber wenn Sie es stringifizieren, wird es aus kompatiblen Gründen sein:
Ich bin sicher, das dauert einige Zeit.
quelle
Nur um meine 2 Cent hinzuzufügen: Als ich vor einigen Jahren sowohl mit JS als auch mit PHP gearbeitet habe, habe ich mich daran gewöhnt, einfache Anführungszeichen zu verwenden, damit ich das Escape-Zeichen ('\') eingeben kann, ohne es ebenfalls maskieren zu müssen. Ich habe es normalerweise verwendet, wenn ich rohe Zeichenfolgen mit Dateipfaden usw. eingegeben habe ( http://en.wikipedia.org/wiki/String_literal#Raw_strings ).
Wie auch immer, meine Konvention endete damit, dass einfache Anführungszeichen für rohe Zeichenfolgen vom Typ Bezeichner verwendet wurden
if (typeof s == 'string') ...
( z. B. (in denen Escape-Zeichen niemals verwendet werden würden)) und doppelte Anführungszeichen für Texte wie "Hey, was ist los?". Ich verwende auch einfache Anführungszeichen in Kommentaren als typografische Konvention, um Bezeichnernamen anzuzeigen. Dies ist nur eine Faustregel, und ich breche nur bei Bedarf ab, z. B. beim Eingeben von HTML-Zeichenfolgen'<a href="#"> like so <a>'
(obwohl Sie die Anführungszeichen auch hier umkehren können). Mir ist auch bewusst, dass im Fall von JSON doppelte Anführungszeichen für die Namen verwendet werden - aber außerhalb davon bevorzuge ich persönlich die einfachen Anführungszeichen, wenn für den Text zwischen den Anführungszeichen niemals ein Escapezeichen erforderlich ist - wie zdocument.createElement('div')
.Unterm Strich, und wie einige erwähnt / angedeutet haben, wählen Sie eine Konvention, bleiben Sie dabei und weichen Sie nur dann ab, wenn dies erforderlich ist.
quelle