2015-03-22 15 views
11

Sul interprete node.js: -Perché console.log si comporta in questo modo?

console.log("A newline character is written like \"\\ n \"."); 
//output is:- 
// A newline character is written like "\ n ". 

Ma quando è sufficiente inserire questo nell'interprete node.js: -

"A newline character is written like \"\\ n \"." 
// it prints out:- 
//'A newline character is written like "\\ n ".' 

Qualcuno ora perché questo è accaduto? Solo curioso di sapere di più su node.js Grazie in anticipo per la risposta.

+0

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 –

risposta

6

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" 
Problemi correlati