Quando registrazione una stringa, viene completamente analizzato e ogni personaggio viene sfuggito, e questo è ok, è il comportamento previsto.
nonethless, visualizzazione una stringa (non registrazione), l'interprete cerca di mostrare nella forma più semplice possibile. Ciò eviterà inoltre qualsiasi malinteso per l'utente che lo sta guardando. Quindi, in sostanza:
Visualizzazione "\"hi\""
mostrerà '"hi"'
, perché si può scrivere un doppio apice all'interno di una stringa delimitata sola offerta, senza scampo, ed è molto più facile da leggere.
La visualizzazione di '\'hi\''
mostrerà "'hi'"
, per lo stesso motivo.
Visualizzazione "\"hi\", 'hey'"
, con entrambe le virgolette singole e doppie, sarà costringerà l'interprete visualizzare la stringa originale (nella stessa forma è stato creato), perché non c'è modo per visualizzarlo wothout sfuggire neanche il singolo o le doppie virgolette, quindi può essere visualizzato solo come "\"hi\", 'hey'"
.
provare da soli:
var a = "\"hi\", 'hey'";
> "\"hi\", 'hey'"
var b = "\"hi\"";
> '"hi"'
console.log(a + ", " + b);
> "hi", 'hey', "hi"
fonte
2015-03-22 09:14:19
Forse è perché quando una stringa viene analizzata dal compilatore. Si comporta diversamente in entrambi i casi. @ azero0. Ma fornisce lo stesso output in puro Javascript. Bel controllo, potrebbe essere che il compilatore non analizzi i tipi di dati stringa come quelli della stringa console.log(). Buona domanda –