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?
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.
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:
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.
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.
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.");
oderalert('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