Math.max.apply(null,arr);

时间:2018-01-19 14:06:25

标签: javascript arrays

如何

Math.max.apply(null, arr);

完全正常工作?

假设

var arr = [45,25,4,65] ;

它会比较'null'和'45'并返回两个相邻的最大数字。 45?

比较后,它会再次比较返回的数字和下一个数组编号,例如25并返回最大数量?

如何在内部完成计算?我想,这是一样的。

2 个答案:

答案 0 :(得分:2)

apply的第一个参数是函数的this。 这并不重要,因为此函数不需要特定的this值。例如,在其他一些情况下可能很重要:

var foo = {
    b: true,
    func: function() {
        return this.b;
    }
};
var bar = { b : false }; 

foo.func(); // true
foo.func.apply(bar); // false

答案 1 :(得分:0)

它等于

 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;
};