在这种情况下,日志函数可以接受任意数量的参数。
Using .apply()
,传递多少个参数并不重要。您可以将集合交给console.log()
,它们将作为单独的参数到达。
所以如果你这样做:
console.log(arguments)
……你实际上是在付出console.log
一个单一的Arguments
object.
但是当你这样做时:
console.log.apply( console, arguments );
...就好像您分别通过了它们一样。
其他有用的使用示例.apply()
这样可以在其他可以接受可变数量参数的方法中进行演示。一个这样的例子是Math.max()
.
一个典型的调用是这样的:
var max = Math.max( 12,45,78 ); // returns 78
...它返回最大的数字。
如果您实际上有一个值数组,而您需要其中最大的值,该怎么办?您可以使用.apply()
来传递集合。Math.max
会认为它们是作为单独的参数而不是数组发送的。
var max = Math.max.apply( null, [12,45,92,78,4] ); // returns 92
正如您所看到的,我们不需要提前知道将传递多少个参数。该数组可以有 5 或 50 个项目。无论哪种方式都会起作用。