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

apply, function, javascript

Solution

`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.

Problem

How does the `Math.max.apply()` work?. ``` <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>JS Bin</title> </head> <body> <script> var list = ["12","23","100","34","56", "9","233"]; console.log(Math.max.apply(Math,list)); </script> </body> </html> ``` https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max 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.` ``` console.log(Math.max.apply(Math,list)); ``` Does all the `user-defined/Native functions` have call and apply method which we can use?.

Original source

Related problems