티스토리 뷰
spread (...)
: iterable 한 모든 것의 (대표적으로 문자열, 배열) 요소를 "펼쳐"주는 문법
배열에서 spread 사용(복사, 합치기)
// 배열 복사
var arr = [1, 2, 3];
var arr2 = [...arr]; // arr.slice() 와 유사
// [1, 2, 3]
// 이미 존재하는 배열을 포함한 새로운 배열 생성
var parts = ['shoulders', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes'];
// ["head", "shoulders", "knees", "and", "toes"]
객체에서 spread 사용(복사, 합치기)
var obj1 = { foo: 'bar', x: 42 };
var obj2 = { foo: 'baz', y: 13 };
// 객체 복사
var clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }
// 이미 존재하는 객체들을 합치는데 키가 동시에 존재할 경우, 나중 값을 저장
var mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
rest (...)
: 함수의 매개변수(parameter)를 배열의 형태로 받아서 사용(매개변수를 배열로 바로 사용 가능)
매개변수 개수가 가변적일 때 유용함.
function myFun(a, b, ...manyMoreArgs) {
console.log("a", a)
console.log("b", b)
console.log("manyMoreArgs", manyMoreArgs)
}
myFun("one", "two", "three", "four", "five", "six")
// a, "one"
// b, "two"
// manyMoreArgs, ["three", "four", "five", "six"] <-- 배열
구조 분해 할당(비구조화할당)
: 객체나 배열의 속성을 해체한 후, 그 값을 변수에 새로 할당하는 과정
객체 및 배열 리터럴 표현식을 할당문의 좌변에서 사용하며, 원래 변수에서 값을 분해하여 할당
배열 구조 분해 할당
var x = [1, 2, 3, 4, 5];
var [y, z] = x;
console.log(y); // 1
console.log(z); // 2
변수 값 교환
var a = 1;
var b = 3;
[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
나머지 구문(rest. 나머지 매개변수) 이용해 남은 부분을 하나의 변수에 할당
var [a, ...b] = [1, 2, 3];
console.log(a); // 1
console.log(b); // [2, 3]
객체 구조 분해 할당
// 키와 변수 이름이 같아야함
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
선언 없는 할당
// ()로 감싸면 var로 선언한 것과 같음
// () 앞에는 ;(세미콜론)이 있어야 함
// 없으면 앞줄과 연결되어 함수 실행에 이용될 수 있음
({a, b} = {a: 1, b: 2});
새로운 변수 이름으로 할당
var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
기본값(해체된 값이 undefined인 경우 대신 사용)
var {a = 10, b = 5} = {a: 3};
console.log(a); // 3
console.log(b); // 5
Reference
2022.11.08
코스 S1U10 중
'코드스테이츠(SEB_FE_42)' 카테고리의 다른 글
[HTML, JS] DOM (0) | 2022.11.10 |
---|---|
[JS] TDD, 얕은복사, 깊은복사, shorthand 등 (0) | 2022.11.10 |
[JS] 원시 자료형과 참조 자료형, 스코프, 클로저 (0) | 2022.11.07 |
[JS] 객체 (0) | 2022.11.04 |
[JS] 배열 (0) | 2022.11.03 |
댓글
공지사항