console.log.apply()和Math.max应用程序()



我从这篇文章中读到,在这个函数中,

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值和作为数组(或类似数组的对象)提供的参数。

最新更新