Ответ 1
Когда регистрирует строку, она полностью анализируется, и каждый символ получает escape-код, и это нормально, это ожидаемое поведение.
Nonlessless, , отображающий строку (не регистрируясь), интерпретатор пытается показать ее в простейшей возможной форме. Это также позволит избежать недоразумений для пользователя, который смотрит на него. Итак, в основном:
-
Отображение
"\"hi\""
покажет'"hi"'
, потому что вы можете записать двойную кавычку внутри строки с разделителем без кавычек, не избегая ее, и ее намного легче читать. -
Отображение
'\'hi\''
покажет"'hi'"
по той же причине. -
Отображение
"\"hi\", 'hey'"
с одиночными и двойными кавычками будет заставить интерпретатор показать вам исходную строку (в той же форме, которую вы создали), потому что никоим образом не показывать его, избегая одиночной или двойной кавычек, поэтому ее можно отобразить только как"\"hi\", 'hey'"
.
Попробуйте сами:
var a = "\"hi\", 'hey'";
> "\"hi\", 'hey'"
var b = "\"hi\"";
> '"hi"'
console.log(a + ", " + b);
> "hi", 'hey', "hi"