본문 바로가기
프로그래밍 개발/JS ES6+

Javascript ES6+ rest parameter (나머지 매개변수)

by Jinseok Kim 2020. 12. 9.
반응형

 

 

 

rest parameter(나머지 매개변수)

 

 

 

 

구 버전인 ES5에서 썼던 배열을 만들어 주는 argumernt 대신 "...(매개변수)"을 쓴다면 더 쉽게 배열을 만들 수 있다.

 

 

 

 

 

 

...(매개변수)

 

const f = function (x, y, ...rest) {
  console.log(rest)
}
f(1, 2, true, null, undefined, 10)

//결과;
//[true, null, undefined, 10]

 

  • 위의 결과를 보면 rest 매개변수를 호출한 결과 ...rest만 해줘도 모든 정의된 값들이 배열로서 결과가 나온다는 것을 알 수 있다.

 

 

 

 

 

 

const f = function (...rest) {
  console.log(rest)
}
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

//결과:
//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

...rest 혼자만 써도 정의된 매개변수 값들은 모두 배열로 바꿔준다.

 

 

 

 

 

 

 

const f = function (_first, ...rest, _last) {
  console.log(_first, _last)
}
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

//결과:
//오류

하지만 끝 부분 인자이거나 홀로가 아니면 쓸 수 없다는 특징이 있다.

 

 

 

 

 

 

 

 

 

 

 

객체의 setter에서

 

 

let person = {
  name: 'name',
  age : 30,
  get personInfo(){
    return this.name + ' ' + this.age
  },
  set personInfo (...val) {
    this.name = val[0]
    this.age  = val[1]
  }
}
console.log(person.personInfo)

//결과:
//오류

 

  • 위의 코드가 오류가 뜬 이유는 프로퍼티 성질과 관련이 있다. 하나의 프로퍼티 key에는 하나의 프로퍼티 값 즉 하나의 배열, 하나의 객체밖에 들어 갈 수 없다. 즉 그래서 set의 메소드 인자는 하나의 프로퍼티의 하나의 값만을 할당할 수있다는 의미라고 볼 수 있다.
  • 하지만 이 set 메소드 인자에 ...val을 넣게 되면 하나의 프로퍼티가 값이 들어가는 것이 아니기 때문에 결과가 나올 수 없게 된 것이다. set(x,y)로 하여도 set은 실행되지 않는다.

 

 

 

 

 

 

반응형

댓글