我从这篇文章中读到,在这个函数中,
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] );
为什么在这种情况下arguments
没有单独解析?
"separate"表示作为函数的独立参数,而不是作为单独的函数调用。
正如伊凡直言不讳地说的那样:
你的前提是错误的。调用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()方法调用一个函数[一次],该函数具有给定的this值和作为数组(或类似数组的对象)提供的参数。