2015-03-22 6 views
11

На переводчика Node.js: -Почему console.log ведет себя так?

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

Но когда вы просто ввести это в Node.js переводчику: -

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

ли кто-нибудь теперь, почему это произошло? Просто интересно узнать больше о node.js Заранее благодарим за ваш ответ.

+0

Может быть, это происходит потому, что, когда строка обрабатывается компилятором. В обоих случаях они ведут себя по-разному. @ azero0. Но он дает тот же результат в чистом Javascript. Приятная проверка, может быть, компилятор не разбирает строковые типы данных так же, как в строке console.log(). Хороший вопрос –

ответ

6

Когда каротаж строка, то она получает полностью разобран и каждый персонаж получает спасся, и это нормально, это ожидаемое поведение.

Nonethless, отображения строку (не протоколирования), интерпретатор пытается показать его в простейшей форме. Это также позволит избежать недоразумений для пользователя, который смотрит на него. Так, в основном:

  • Отображение "\"hi\"" покажет '"hi"', потому что вы можете написать двойные кавычки внутри одиночной кавычки строку с разделителями без возможности избежать этого, и это гораздо легче читать.

  • '\'hi\'' покажет "'hi'", по этой же причине.

  • Отображение "\"hi\", 'hey'" с одиночными и двойными кавычками, будет заставить интерпретатор, чтобы показать вам оригинальную строку (в той же форме, которую вы создали его), потому что нет никакого способа, чтобы отобразить его wothout спасаясь либо одного или двойные кавычки, поэтому его можно отображать только как "\"hi\", 'hey'".

Попробуйте сами:

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

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

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