为什么console.log的行为如下?

时间:2015-03-22 07:20:14

标签: javascript node.js console.log

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

1 个答案:

答案 0 :(得分:6)

记录 一个字符串时,它会被完全解析并且每个字符都被转义,这没关系,这是预期的行为。

非正常, 显示字符串(不是日志记录),解释程序会尝试以最简单的形式显示它。这也会避免对正在看它的用户有任何误解。所以,基本上:

  • 显示"\"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"