Shane Shane - 29 days ago 15x
Javascript Question

How does the Math.max.apply() work?

How does the


<!DOCTYPE html>
<meta charset=utf-8 />
<title>JS Bin</title>
var list = ["12","23","100","34","56",

The above code finds the Max number in the List. Can anyone tell me how does the below code work?. It seems it works if i pass
null or Math.


Does all the
user-defined/Native functions
have call and apply method which we can use?.


apply accepts an array and it applies the array as parameters to the actual function. So,

Math.max.apply(Math, list);

can be understood as,

Math.max("12", "23", "100", "34", "56", "9", "233");

So, apply is a convenient way to pass an array of data as parameters to a function. Remember

console.log(Math.max(list));   # NaN

will not work, because max doesn't accept an array as input.

There is another advantage, of using apply, you can choose your own context. The first parameter, you pass to apply of any function, will be the this inside that function. But, max doesn't depend on the current context. So, anything would work in-place of Math.

console.log(Math.max.apply(undefined, list));   # 233
console.log(Math.max.apply(null, list));        # 233
console.log(Math.max.apply(Math, list));        # 233

Since apply is actually defined in Function.prototype, any valid JavaScript function object, will have apply function, by default.