2012-08-27 82 views
5

在Chrome中,以下为什么console.log(true,' t')打印为“t”?

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

将打印

true " " 

为什么有行情游逛?

(注意:console.log(true + '', '\t')将只打印true,以同样的方式,console.log('a', '\t');将只打印a。)

+0

显示空白。 – asawyer

+0

不是100%肯定,但我的猜测是因为\ t是一个表示选项卡的字符串表达式,chrome显示“”,因此您可以区分它实际上是否正在工作。 –

+0

@asawyer:不会为'console.log('a','\ t')'发生! – Randomblue

回答

11

基本上有两种重载到CONSOLE.LOG:

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

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

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

+0

非常好的答案。感谢您指向代码。 – Randomblue

+0

无效链接...... – Rohit

2

我决定发挥与它周围

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

,然后我试图相反

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

不知道为什么,但假还给只有一个空格,而真正给退二O_O .. 。如果\t是在开始没有问题

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

它也不是m atter后面会发生什么,但似乎第一个参数,如果它是一般的布尔值,会影响引号后的所有转义标签。

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

所以它肯定有事情做与第一paramater是一个布尔值,因为如果你用绳子尝试它,它的行为完全正常。我猜Google Chrome是一件很古怪的事情?我需要找到实际看到它的源代码。

+0

1对2空格问题可能是因为它是一个选项卡并展开以填充选项卡列的其余部分。 – apsillers

相关问题