为什么控制台.log(true,' ')打印真“ ”

Why does console.log(true, ' ') print true " "?

本文关键字:打印 控制台 true 为什么 log      更新时间:2023-09-26

在Chrome中,以下内容

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

将打印

true "  "

为什么有报价徘徊?

(请注意,console.log(true + '', ''t')只会打印true,就像console.log('a', ''t');只会打印a一样。

基本上有两个重载需要控制台.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 " " 

不知道为什么,但假只回馈一个空间,而真回馈两个o_O......此外,如果't处于开始阶段,则没有问题

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

之后会发生什么也无关紧要,但似乎第一个参数如果它通常是布尔值,会影响引号后的所有转义制表符。

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

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