15日目TIL


[JS/Node]コアコンセプトと主な構文


Spread構文


Spread構文:主に配列を展開してパラメータとして渡したり、配列を展開して各要素として配列に入れたりします.
function sum (x, y, z) {
  return x + y + z;
}
const numbers = [1, 2, 3];
sum(...numbers)  // 6 리턴

最新の構文


Rest構文:パラメータを配列の形で受信して使用します.パラメータ個数が可変の場合に役立ちます.
function sum (...theArgs) {
  return theArgs.reduce((previous, current) => {
    return previous + current;
  });
}
sum(1, 2, 3)  // 6 리턴
sum(1, 2, 3, 4)  // 10 리턴

アレイでの使用


Spread文法は配列の中で強力な力を発揮している.
  • 組合せ
  • let parts = ['shoulders', 'knees'];
    let lyrics = ['head', ...parts, 'and', 'toes'];
    // 여기서 lyrics 의 값은? (콘솔에서 확인)
    
    let arr1 = [0, 1, 2];
    let arr2 = [3, 4, 5];
    arr1 = [...arr1, ...arr2];  // 참고로 spread 문법은 기존 배열을 변경하지 않는다.(immutable)
    // arr1의 값은?
  • アレイ放射
  • let arr = [1, 2, 3];
    let arr2 = [...arr]; // arr.slice()와 유사하다.
    arr2.push(4);
    // 참고 : spread 문법은 기존 배열을 변경하지 않는다.(immutable) 
    // arr2를 수정한다고 arr이 바뀌지 않는다.
    
    // arr와 arr2 각각의 값은?
    arr; // [1, 2, 3]
    arr2; // [1, 2, 3, 4]

    オブジェクトでの使用

    let obj1 = {foo: 'bar', x: 42};
    let obj2 = {foo: 'baz', y: 12};
    
    let cloneObj = {...obj1};
    let mergeObj = {...obj, ...obj2};
    
    // cloneObj와 mergeObj 각각의 값은?
    cloneObj; // {foo: 'bar', x: 42}
    mergeObj: // {foo: 'baz', x: 42, y: 13}
    // 키가 중복되면 덮어쓰기 된다.

    関数から残りのパラメータを取得

    function myFunc(a, b, ...manyMoreArgs){
      console.log("a", a);
      console.log("b", b);
      console.log("manyMoreArgs", manyMoreArgs);
    }
    myFunc("one", "two", "three", "four", "five", "six");
    
    // 콘솔에 찍히는 내용은?
    a one
    b two
    manyMoreArgs ["three", "four", "five", "six"]
    undefined

    分解後に新しい変数に割り当てる


    整列
    const [a, b, ...rest] = [10, 20, 30, 40, 50];
    
    // a, b, rest 각각의 값은?
    a; // 10
    b; // 20
    rest; // [30, 40, 50];
    オブジェクト
    const {a, b, ...reset} = {a: 10, b: 20, c: 30, d: 40};
    
    // a, b, rest 각각의 값은?
    a; // 10
    b; // 20
    rest; // [30, 40, 50];
    
    // 객체에서 구조 분해 할당 사용시 선언(const, let, var)과
    // 함께 사용하지 않으면 에러가 발생할 수 있다.