console.log 中的 ,​​ 和 + 有什么区别?

What is the difference between , and + in the console.log?

pt=new Date(2019,11,12,8,2,3)

console.log(pt.getFullYear()," ",pt.getMonth());

给出结果2019 " " 11

console.log(pt.getFullYear()+" "+pt.getMonth());

给出的结果为 2019 11

本例中使用, 和+ 有什么区别?

其中第一个为 console.log 提供三个单独的参数,而第二个将三个参数附加在一起,然后将其作为单个参数传递给 console.log。

使用 (,) 表示使用 console.log 表示您请求将一组单独的项目显示为字符串,形成一种数组。当您放置 (+) 符号时,您正在添加字符串,在这种情况下,“”只是在第一个和第二个字符串之间添加一个 space。它被称为串联。

console.log 是控制台 API 的一部分,可以在各种浏览器中访问。您可以在 MDN.

上找到它的完整文档

它指出控制台日志具有以下参数:

obj1 ... objN

A list of JavaScript objects to output. The string representations of each of these objects are appended together in the order listed and output.

因此,当您连接参数时,您只将一个对象传递给函数,而当您传递多个参数时,console.log 将为您进行连接。

console.log(pt.getFullYear()," ",pt.getMonth());

以上示例将三个单独的参数传递给 console.log。它输出的内容取决于 console.log 的实现方式。它随着时间的推移而改变,并且在浏览器之间略有不同。当使用示例中的参数调用时,它可以访问变量并可以根据类型使用一些魔法显示它们,例如,如果它们是数组或对象。在您的示例中,它显示为:

2019 " " 11

其中数字为蓝色文字,表示为数字类型变量,空字符串为红色,表示为字符串。

将此与以下示例进行比较,在该示例中,所有内容都被转换为字符串,然后在一个参数中传递给 console.log

console.log(pt.getFullYear()+" "+pt.getMonth());

其中显示为

2017 5

黑色文字,表示在第一个参数中作为字符串传递。

console.log的第一个参数可以用作格式字符串,就像c和其他语言中的printf一样。例如

console.log( "%d %d", pt.getFullYear(), pt.getMonth() );

其中 %d 是数字的占位符。输出为黑色文本,并提供与第二个示例完全相同的输出。

console.log("%d %d", pt.getFullYear(),pt.getMonth(), pt.getDate());

在上面的示例中,年份和月份将以黑色文本显示,但日期将以蓝色显示。这是因为格式字符串只有两个占位符,但有三个参数。 console.log 使用魔法显示额外的参数。

文档: