为什么console.log(true,'\ t')打印为true“”?

时间:2012-08-27 18:02:57

标签: javascript google-chrome

在Chrome中,以下

console.log(true, '\t');

将打印

true "  "

为什么有引号?

(请注意,console.log(true + '', '\t')仅打印true,与console.log('a', '\t');仅打印a的方式相同。)

2 个答案:

答案 0 :(得分:11)

console.log基本上有两个重载:

console.log(formatString, args)console.log(arg1, arg2, ...)

更具体地说,根据the source code,如果第一个参数是字符串,那么它将其视为其他参数的格式字符串。否则,每个参数都直接输出。

因此console.log(true + '', '\t')输出'true',因为第一个参数是字符串,\t没有占位符,而console.log(true, '\t')将输出两个参数,因为true是不是一个字符串。

答案 1 :(得分:2)

我决定玩它

console.log(true, '\t');
true "  "

然后我尝试了相反的

console.log(false, '\t');
false " " 

不确定为什么但是false只返回一个空格,而true则返回两个o_O ...如果\t在开头就没有问题

console.log('\t', true);
     true

它后面发生的事情也没关系,但似乎第一个参数,如果它一般是一个布尔值,会在引号之后影响所有转义的标签。

console.log(false, '\t', '\t');
false " " " "

所以它肯定与第一个参数是一个布尔值有关,因为如果你用字符串来尝试它,它的行为完全正常。我想谷歌Chrome是一个奇怪的事情?我需要找到实际看到它的源代码。