Javascript console.log.apply()和Math.max.apply()

Javascript console.log.apply()和Math.max.apply(),javascript,Javascript,我从这个函数中读到 function log() { console.log.apply(console, arguments); } 它的工作原理类似于将参数分别传递给console.log(),这是否意味着在调用log([12,24,2])时,可以将其解释为如下所示 console.log(argument[0]); . . . console.log(argument[n]); 如果是这样,下面的代码行会发生什么 var max = Math.max.apply( null,

我从这个函数中读到

function log() {
    console.log.apply(console, arguments);
}
它的工作原理类似于将参数分别传递给console.log(),这是否意味着在调用log([12,24,2])时,可以将其解释为如下所示

console.log(argument[0]);
.
.
.
console.log(argument[n]);
如果是这样,下面的代码行会发生什么

var max = Math.max.apply( null, [12,45,92,78,4] );
为什么在这种情况下,
参数
没有被单独解析?

“单独”是指函数的单独参数,而不是单独的函数调用

正如埃文如此直截了当地说的:

。。你的前提是错误的。调用console.log.apply(console[12,24,2])与console.log(12,24,2)相同

因此,
Math.max.apply(null[12,45,92,78,4])
大致相当于
Math.max(12,45,92,78,4)
,结果是92-扩展沿着参数进行,而不是调用。无论是
console.log
还是
Math.max
,所有函数调用的行为都是一致的


有关更多详细信息,请参阅

apply()方法使用给定的此值和作为数组(或类似数组的对象)提供的参数调用函数[一次]


除非我误解了你,否则你的前提是错误的。调用
console.log.apply(console[12,24,2])
console.log(12,24,2)
是一样的。你能读懂第二个答案吗,
的意思是什么……好像你分别传递了它们。
?@Blake:在研究工作中:你有没有尝试执行
console.log.apply(console[12,24,2]))
console.log(12,24,2)
在调试器控制台中查看您得到了什么?是的,给出了[12,24,2],我想我在那篇文章中分别误解了
的含义