在 Chrome 中,以下
console.log(true, '\t');
将打印
true " "
为什么周围有报价?
(注意console.log(true + '', '\t')
只会打印true
,就像console.log('a', '\t');
只会打印一样a
。)
在 Chrome 中,以下
console.log(true, '\t');
将打印
true " "
为什么周围有报价?
(注意console.log(true + '', '\t')
只会打印true
,就像console.log('a', '\t');
只会打印一样a
。)
基本上,console.log 有两个重载:
console.log(formatString, args)
和console.log(arg1, arg2, ...)
。
更具体地说,根据源代码,如果第一个参数是字符串,则它将其视为其他参数的格式字符串。否则,直接输出每个参数。
因此console.log(true + '', '\t')
输出 'true' 因为第一个参数是字符串并且没有占位符\t
, 并且console.log(true, '\t')
将输出两个参数因为true
不是字符串。
我决定玩弄它
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 " " " "
所以它肯定与第一个参数是布尔值有关,因为如果你用字符串尝试它,它的行为完全正常。我猜它与谷歌浏览器有点奇怪?我需要找到源代码才能真正看到它。