Wenn Sie selbst ein Zeichenfolgenliteral erstellen, müssen Sie die doppelten Anführungszeichen natürlich selbst mit einem Backslash entschlüsseln.
var foo = "baz\"bat";
Das gilt auch für die wenigen anderen Steuerzeichen wie Zeilenumbrüche und Backslashes.
var bar = "baz\\bat\nmynew line and a \"quote\" ";
aber wenn Sie die vorhandene Variable nur in Anführungszeichen einpacken, um sie z.B. an ein anderes System zu übergeben, das Eingaben in Anführungszeichen verlangt, gibt es einige Verwirrung.
Natürlich müssen Sie alle potenziellen doppelten Anführungszeichen in der Zeichenkette entfernen.
var doubleQuoteRe = /\"/g;
var quoted = "\"" + unquoted.replace(escaper, '\\\"') + "\"";
Aber nach Meinung einiger auch müssen sich nun darum kümmern, dass wörtliche Backslash-Zeichen in der Variable nicht mehr vorkommen. Mit anderen Worten: ein viel größerer Hammer als meine kleine Regex. Allerdings sehe ich nicht, warum.