这个问题在这里已有答案:
如何
Math.max.apply(null, arr);
准确的工作?
假设
var arr = [45,25,4,65] ;
它会比较'null'和'45'并返回两个相邻的最大数字。 45?
比较后它会再次比较返回的数字和下一个数组编号,例如25并返回最大数量?
如何在内部完成计算?我想,这是一样的。
apply的第一个参数是函数的this
。这里没关系,因为这个函数不需要特定的this
值。例如,在其他一些情况下可能很重要:
var foo = {
b: true,
func: function() {
return this.b;
}
};
var bar = { b : false };
foo.func(); // true
foo.func.apply(bar); // false
它等于
Math.max(...arr);
这等于:
Math.max(45, 25, 4, 65);
它的内部工作方式取决于浏览器/解析器本机实现。在js中它可能是:
Math.max = (...args) => {
let max = - Infinity;
for(const number of args)
if(number > max) max = number;
return max;
};