본문 바로가기

자바스크립트-스터디[2021-10-05~완료]

[26.4~26.5장] ES6함수 추가 기능

26.4 REST 파라미터

1. 기본문법

REST 파라미터: 매개변수 앞에 ... 점 세개를 붙여서 정의한 매개변수

 

 

 

일반 매개변수와 Rest 파라미터는 함께 사용할 수 있다.

 

function ff(a, b, ...c){
    console.log(a);
    console.log(b);
    console.log(c);
}

 



Rest 파라미터는
먼저 선언된 매개변수에 할당된 인수를 제외한
나머지 인수를 배열로 할당한다.




마지막에 전달을 안해도 [ ] 배열이 생기네




Rest 파라미터를 맨 앞에 두면 안됨. 맨 마지막에!



Rest 파라미터는 단 하나만 선언 가능

Rest 파라미터는 함수 정의 시
선언한 매개변수 개수를 나타내는 함수 객체의
length 프로퍼티 영향을 주지않는다?
뭔말이야
줄어드는데??


 

 

2. Rest 파라미터와 arguments 객체

 

es5에서는

함수를 정의할 때

매개변수의 개수를 확정할 수 없는 가변 인자 함수의 경우

매개변수를 통해 인수를 전달받는 것이 불가능하다.

 

arguments 객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는

순회 가능한 유사 배열 객체이다!

 

함수 내부에서 지역변수처럼 사용한다.

 

 

arguments 객체는 배열 아님

유사 배열 객체.

배열 메서드 사용하려면.....

Function.prototype.call, Function.prototype.apply 메서드 사용

객체를 --> 배열로 변환

 

function sum(){

    console.log(arguments);
    var arr = Array.prototype.slice.call(arguments);
// arguments를 배열로 바꾸는 번거로움
    return arr.reduce(function(pre, cur){ return pre+cur;},0);

}//sum end


ES6 에서는
Rest 파라미터를 사용하여
가변 인자 함수의 인수 목록을
배열로 직접 전달한다.

arguments객체를 배열로 변환하는 번거로움을 피한다.


ES6 에서는
Rest 파라미터와 arguments객체를 모두 사용 가능.

화살표 함수 자체의 arguments객체 없다.
화살표 함수로 가변 인자 함수 구현할 때는 Rest 파라미터를 사용해라!!

function sum(...args){
    console.log(args);
    
    return args.reduce((pre, cur)=>pre+cur, 0);
}//sum2 end

 

 

 

안그래도 궁금했따

 

<!-- Global site tag (gtag.js) - Google Ads: 792278301 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-792278301"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);} // 여기서 arguments 무엇인가???
  gtag('js', new Date());

  gtag('config', 'AW-792278301');
</script>


<!-- Event snippet for 리드 양식 제출 conversion page
In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. -->
<script>
function gtag_report_conversion(url) {
  var callback = function () {
    if (typeof(url) != 'undefined') {
      window.location = url;
    }
  };
  gtag('event', 'conversion', {
      'send_to': 'AW-792278301/G6nKCPXloYQDEJ3q5PkC',
      'event_callback': callback
  });
  return false;
}
</script>

 

 

26.5 매개변수 기본값

 

함수를 호출할때 매개변수의 개수만큼 인수를 전달하냐 안하냐~~

 

자바스크립트는 인수를 맞추지 않아도 된다.

자바스크립트 엔진이 매개변수의 개수와 인수의 개수를 체크하지 않는다.

 

부족한 인수는 undefined 값을 가진다.

매개변수에 인수가 전달되지 않으면 매개변수에 기본 값을 할당해서

오류를 방지하는 코드를 만들 수 있다.

x = x || 0;

 

크으 이걸 적용해야겠다.

 

ES6에서 도입된 매개변수 기본값을 사용하면

초기화를 간소화 할 수 있다. (name = "han")

인수를 전달하지 않거나, undefined을 전달했을때만 유효하다. null 은 안됨

 

 

Resr 파라미터에는 기본값을 지정할 수 없다

 

매개변수의 기본값은

함수 객체의 프러퍼티와 arguments 에 영향을 주지 않는다.

 

'자바스크립트-스터디[2021-10-05~완료]' 카테고리의 다른 글

25장 클래스  (0) 2021.12.18
[24 클로저]  (0) 2021.12.11
22장 this  (0) 2021.12.06
21장 빌트인 객체  (0) 2021.11.29
[7주차] 23장 실행 컨텍스트  (0) 2021.11.29