Was ist der Unterschied zwischen 'und "in JavaScript?

70

Ich habe diese Frage gesehen und wundere mich über dasselbe in JavaScript.

Wenn Sie beim Erstellen von Zeichenfolgen in JavaScript das Zeichen "oder das Zeichen" verwenden, scheint sich die Anwendung gleich zu verhalten. Was ist also der Unterschied zwischen diesen beiden Zeichen?

Der einzige Vorteil, den ich beim Erstellen von Strings gesehen habe, ist, dass ich Dinge tun kann wie:

var toAppend = '<div id="myDiv1"></div>';

Anstatt von:

var toAppend = "<div id=\"myDiv1\"></div>";

Gibt es einen signifikanten Unterschied zwischen ihnen, den ich beachten sollte?

fmsf
quelle

Antworten:

91

Sie sind in jeder Hinsicht gleichwertig. Wenn Sie eine der beiden Zeichenfolgen in einer Zeichenfolge verwenden möchten, empfiehlt es sich, die andere Zeichenfolge zu verwenden, um die Zeichenfolge zu erstellen, wie Sie bereits bemerkt haben. Davon abgesehen ist es egal.

Paolo Bergantino
quelle
48

Obwohl dies technisch gesehen kein Unterschied zu Javascript ist, ist es erwähnenswert, dass Zeichenfolgen in einfachen Anführungszeichen per se kein gültiges JSON sind. Ich denke, dass die Leute automatisch annehmen, dass, da JSON gültiges JS ist, gültige JS-Zeichenfolgen auch gültiges JSON sind, was nicht unbedingt wahr ist .

ZB {'key': 'Some "value"'}ist JSON nicht gültig, wohingegen es {"key": "Some 'value'"} ist.

B Robster
quelle
21

Es gibt keinen Unterschied. Der Grund für seine Existenz ist genau das, was Sie erwähnt haben

Philippe Leybaert
quelle
5

Laut Mozilla empfiehlt es sich, "" in HTML zu verwenden (wobei "nicht verwendet werden kann"), während "" in Javascript reserviert wird (wobei "" und "gleichgültig verwendet werden können) ...

Davidbourguignon
quelle
2
Einfache Anführungszeichen können in HTML verwendet werden: stackoverflow.com/questions/273354/…
GOTO 0
Ja, gemäß dem Standard, aber "einige HTML-Clients (nicht erforderliche Browser) haben kompatible Probleme mit einfachen Anführungszeichen" ... Daher empfehle ich, die Richtlinien von Mozilla zu befolgen.
Davidbourguignon
Könnten Sie auf Mozilla verlinken, da Sie sie zitieren? Zum Beispiel: developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/…
orangecaterpillar
2

Ich denke, es gibt noch einen weiteren Unterschied. Wenn Sie Folgendes tun

var str1 = 'The \' character';
var str2 = 'The " character';
var str3 = "The ' character";
var str4 = "The \" character";
document.write(str1.replace("'", "%26"));
document.write(str2.replace('"', "%22"));
document.write(str3.replace("'", "%26"));
document.write(str4.replace('"', "%22"));

Das document.write schlägt für str1 und str4 fehl. Das ist der Unterschied, aber ich weiß nicht, ob es eine Problemumgehung gibt, damit sie funktionieren.

shanmuk1729
quelle
3
In welchem ​​Browser schlagen diese document.writes fehl? Ich habe sie nicht zum Scheitern gebracht. (Sobald ich genug schließende Klammern in diesen Code gesetzt habe)
Lee Kowalkowski
1

Versuche dies:

console.log("mama+"mama"")

Output : Uncaught SyntaxError: missing ) 
after argument list

Versuchen Sie jetzt:

console.log('mama+"mama"')

Output :  mama+"mama"
Eran Peled
quelle
0

Wie oben geschrieben, gibt es keinen Unterschied, aber für Situationen müssen Sie "/ 'in einer Zeichenfolge verwenden.

Ich denke, eine bessere Vorgehensweise für Situationen, in denen Sie Zeichenfolgen mit Variablen verketten müssen, ist die Verwendung von Vorlagenzeichenfolgen: Price: ${price}, Amount: ${amount}. Total: ${price*amount}

Auf diese Weise können Sie "und" hinzufügen und Variablen verketten.

Viel einfacher zu lesen, viel einfacher zu schreiben.

Eyal Segal
quelle
-4

WARNUNG!!!!

Da ist ein Unterschied. Beim Hinzufügen zu Arrays müssen Sie das eine oder andere verwenden. Das Array wird verwirrt, wenn Sie zwei verschiedene Arten von Anführungszeichen verwenden.

Beispiel:

//WILL NOT WORK
var array = ["apple","orange","banana"];

array.push('pear');

//WILL WORK
var array = ["apple","orange","banana"];

array.push("pear");
Loko Locust
quelle
2
Können Sie das näher erläutern? Dies entspricht weder meiner Erfahrung noch den Tests, die ich gerade durchgeführt habe.
Stephen Rauch