21.7.2 TIL(spread,rest構文)
Spread構文
主に配列を展開してパラメータとして渡すか、配列を展開して各要素として配置します.
ex)
function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
sum(...numbers) // ...numbers 전개구문으로 numbers 배열을 풀어 인자로 전달
ex) 배열 복사
let arr = [1, 2, 3];
let arr2 = [...arr];
arr2.push(4);
// ...arr 전개구문으로 arr의 요소를 arr2 변수에 복사하였다 ,
//전개구문은 데이터를 immutable 하므로 arr의 값은 변하지않는다
//arr2 === [1,2,3,4]
ex) 객체의 속성 복사
let obj1 = { foo: 'bar', x: 42 };
let obj2 = { foo: 'baz', y: 13 };
let clonedObj = { ...obj1 };
let mergedObj = { ...obj1, ...obj2 };
// clonedObj === { foo: 'bar', x: 42 };
// mergedObj === { foo: "baz", x: 42, y: 13 };
// mergedObj처럼 obj1과 obj2의 키가 같을경우 뒤에오는 객체의 value를 사용한다
最新の構文
パラメータは配列の形で受信され、使用できます.パラメータの数が可変の場合に便利です.
ex)
function sum(...theArgs) {
return theArgs.reduce((previous, current) => {
return previous + current;
});
}
sum(1,2,3)
sum(1,2,3,4) //sum 함수에 들어가는 인자가 정해지지않고 가변적일때 ...theArgs 와 같은 Rest문법을 사용
//sum(1,2,3,4) 로 함수를 호출할 경우 theArgs === [1,2,3,4] 배열이 된다
ex) rest 문법으로 나머지 파라미터 받아오기
function myFun(a, b, ...manyMoreArgs) {
console.log("a", a);
console.log("b", b);
console.log("manyMoreArgs", manyMoreArgs);
}
myFun("one", "two", "three", "four", "five", "six");
構造分解の割り当て
構造分解配分とは,Spread構文を用いて値を分解し,個々の値を変数に再配分するプロセスである.
整列
const [a, b, ...rest] = [10, 20, 30, 40, 50];
// 각각의 변수 a === 10, b === 20, rest === 30,40,50
オブジェクト
const {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
// 변수 a === 10 b === 20, rest === {c: 30, d: 40}
* 객체에서 구조 분해 할당을 사용하는 경우, 선언(const, let, var)과 함께 사용하지 않으면 에러가 발생할 수 있습니다.
オブジェクト分解の例として、図に示すように、関数のパラメータを使用してオブジェクトのキーと値を指定し、属性値をパラメータにします.パラメータdisplayName="jdoe"、name="John"
Reference
この問題について(21.7.2 TIL(spread,rest構文)), 我々は、より多くの情報をここで見つけました https://velog.io/@ljy505541/21.7.2-TIL-spread-rest-문법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol