Thứ Ba, 8 tháng 12, 2015

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>
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
Math.max.apply(Math,list)
So this eventually equals to
Math.max("12","23","100","34","56", "9","233")
It seems it works if i pass null or Math

Không có nhận xét nào:

Đăng nhận xét