为什么console.log的行为是这样的?

svgewumm  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(327)

在node.js解释器上:-

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的信息,提前感谢您的回答。

nxagd54h

nxagd54h1#

当记录一个字符串时,它会被完全解析,每个字符都会被转义,没关系,这是预期的行为。
如果显示一个字符串(而不是日志),解释器会尝试以最简单的形式显示它。这也将避免用户对它的任何误解。因此,基本上:
展示 "\"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"

相关问题