2015-03-22 14 views
11

Konsol.log neden böyle davranıyor? sadece node.js tercüman bu girdiğinizde</p> <pre><code>console.log("A newline character is written like "\ n "."); //output is:- // A newline character is written like " n ". </code></pre> <p>Ama: - -: node.js tercüman Açık

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

şimdi herkes bu neden oldu mu? Sadece node.js hakkında daha fazla bilgi edinmek için sabırsızlanıyorum Cevabınız için şimdiden teşekkür ederiz. günlüğü bir dize, tamamen ayrıştırılır alır ve her karakteri kaçtı alır, ve bu normal bir zaman

+0

bir dize derleyici tarafından çözümlenen zaman çünkü öyle olabilir. Her iki durumda da farklı davranır. @ azero0. Ancak aynı çıktıyı saf Javascript'te verir. Güzel bir denetim, derleyici, dize veri türlerini, console.log() 'ın dizgisiyle karşılaştırıldığı şekilde ayrıştırmıyor olabilir. İyi soru –

cevap

6

, bu beklenen davranıştır.

Nonethless, bir dize (değil günlüğü) görüntülendiği , tercüman mümkün olan en basit biçimde onu göstermeye çalışır. Bu, aynı zamanda, bakmakta olan kullanıcı için herhangi bir yanlış anlaşılmayı da önleyecektir. Yani, temelde:

bunu kaçan olmadan tek tırnak sınırlandırılmış bir dize içinde bir çift tırnak yazabilir ve bu çok daha kolay okunur, çünkü '"hi"' gösterecektir "\"hi\"" gösteriliyor
  • . Aynı neden için, '\'hi\'' gösteriliyor "'hi'" gösterilecek. o da tek kaçan wothout gösterilecek hiçbir yolu yoktur, çünkü

  • , size (eğer oluşturulduğu aynı formda) orijinal dize göstermek için tercüman zorlamak , tek ve çift tırnak hem, "\"hi\", 'hey'" olacak gösteriliyor veya çift tırnak, bu nedenle yalnızca "\"hi\", 'hey'" olarak gösterilebilir.

kendiniz deneyin:

var a = "\"hi\", 'hey'"; 
> "\"hi\", 'hey'" 

var b = "\"hi\""; 
> '"hi"' 

console.log(a + ", " + b); 
> "hi", 'hey', "hi"