Javascript에서 배열의 최대값을 구하려면 함수를 사용하거나 루프문이 있다. 

Math.max 함수를 사용해본다.

이렇게 Math.max함수를 이용해 매개변수들의 최대값을 구할 수 있다.

 

전역변수에 배열을 넣어 Math.max함수를 적용하면 오류가 난다.

apply함수를 사용하면 오류가 나지 않고 최대값을 구할 수 있다.

전역변수만고 배열을 직접 파라미터로 넣어서 사용할 수도 있다.

 

Math.max(1,2,3,4,5,6,7);

괄호 안을 아규먼트(매개변수)라고 한다.

Math.max.apply(null, [1,2,3,4,5,6,7]);

여기서 괄호 안을 파라미터(인자값)이라고 한다.

아규먼트는 함수에 전달하는 값이고 파라미터는 함수에 전달 받는 값이다.

 

Q. apply는? 

A. apply라는 함수는 함수 혹은 메서드를 실행시키는 보조수단이라고 생각하면 된다.  

    apply는 굳이 써도 되고 안써도 된다. 

    apply는 this와 배열로 제공되는 arguments로 함수를 호출한다.

  

배열에 여러 개 값을 담고 제일 큰 값을 구하려면 for문을 돌려야한다. 

그런데 개발할 때는 파라미터를 많이 보내면 안된다. 파라미터는 1개정도 보내는 것이 제일 좋다.
apply함수를 안 쓰면 파라미터를 여러 개 써야하지만 쓰면 최소의 파라미터를 쓸 수 있다.

 

apply함수의 몇 가지 특징이 있다.
1. Math.max.apply(null, arr);  첫번째 파라미터가 null인 이유는 null을 써도 되고 안써도 되는 것이다. 
2. Math.max.apply(null, arr); 두번째 파라미터(arr)에는 배열만 들어간다는 것이다. 자동으로 큰값을 뽑아올 수 있다. 
   파라미터를 여러 개 보내는 상황에서도 간단히 사용할 수 있다.

 

3. Math.max.apply(null, arr); 첫번째 파라미터가(null) null이 나오게 된 이유?
   참고로, 메서드 안에서 this는 해당 스코프의 부모스코프의 오브젝트를 바라본다. 

   최종적으로 젤 최상위 스코프인 window객체를 바라본다. 
   함수를 실행하는 순간, apply의 첫번째 파라미터로 보낸 this의 대상이 바뀐다. 

   첫번째 파라미터로 보낸 부모메서드로 this를 바꾼다. 
   이것이 실행되는 순간은 함수를 실행하는 순간이다. 

      그래서 this를 받고싶지 않으면 null로 적어준다.

      예를 들어 설명하면

 

여기서 this는 해당스코프의 부모스코프인 obj를 바라본다. { }중괄호를 스코프라고 한다.

obj.three( )의 결과값이 java로 나오는 것이다.

 

this를 받고싶지 않으면 첫 번째 파라미터에 null로 적어주거나 안 적어도 된다.

여기서 첫번째 파라미터에 아무것도 안적어줬기 때문에 obj2를 바로 실행한다.

그래서 결과값이 zzang이 나왔다.


**array Class 찾아보기/ 이크마

 

 

 

출처 : 한큐에 자바 수강내용

+ Recent posts