반응형
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은 실행되지 않는다.
반응형
'프로그래밍 개발 > JS ES6+' 카테고리의 다른 글
Javascript ES6+ 객체의 향상된 기능들 (0) | 2020.12.11 |
---|---|
Javascript ES6+ spread operator (펼치기 연산자) (0) | 2020.12.09 |
Javascript ES6+ default parameter (매개변수 기본값) (0) | 2020.12.09 |
Javascript ES6+ template literal (0) | 2020.12.08 |
Javascript ES6+ forEach, map, reduce 메소드 (0) | 2020.12.08 |
댓글