let-const-rest-parameter-spread-operator-destructuring

let

  • 재선언 할 수 없다.

  • block 스코프

  • 똑같은 명으로 정의할 수 없다.

  • window에 붙지 않는다.

Quiz

for (var i = 1; i < 11 i++) {
    setTimeout(function () {
        console.log(i);
    }, i * 1000);
}
for (let i = 1; i < 11 i++) {
    setTimeout(function () {
        console.log(i);
    }, i * 1000);
}

Example

{
    let jason = {
        codename: 'blackbriar',
        kill: function (target) {
            target = null;
        }
    };
    let operator = {
        codename: 'onion',
        answer: function () {
            alert('run away!');
        }
    };
    jason.kill(operator);
}
console.log(jason.codename);
console.log(operator.codename);

quiz

풀이

window에 붙지 않는다

why? window가 객체인데.. 없는 속성한테 접근하려고 해서이다.

더 엄격해졌다.

라는 에러를 띄운다. 'ㅁ' hoisting이 아예 안됐다곤 할 수 없으니 더 엄격해져서 error를 띄운다.

TDZ

Temporal dead zone(MDN) 참조

hoisting이 일어나지만 var와는 다르게 var는 undefined로 초기화가 되는거지만, let은 초기화가 안되는거다.

const

  • constant 상수(변하지 않는 수)에서 온 이름이다.

  • 재선언 할 수 없다.

  • 재할당 할 수 없다.

Example

rest parameter

나머지 매개변수

배열로 만들어 준다.

"arguments" is different

spread operator

  • 변수의 값으로 사용될 수 있다.

  • 인자에 사용 될 수 있다.

  • 배열과 객체의 [], {} 모양을 벗길 수 있다.

Example

rest랑 똑같이 생겼는데 rest는 함수에서 마지막 매개변수에서만 사용된다.

Example

Example

destructuring

  • 배열과 객체 뿌셔..

  • 키는 변수명 선언 자리와 매개변수 자리에 쓸 수 있다.

  • 변수명은 변수의 값 자리와 인자 자리에 쓸 수 있다.

  • 배열의 요소와 객체의 키값을 키 이름(또는 새로운)의 변수로 만들 수 있다.

Example

객체 뿌시기

  1. 왼쪽에 객체 모양을 만든다 {}

  2. 안에는 속성 값을 써준다.

  3. 오른쪽엔 객체 변수명을 써준다.

key말고 다른 변수 명을 쓰고 싶을 때

매개변수에서도 객체 Destructuring

변수를 선언하고 만드는곳에 Destruturing 하였다. -> 매개변수

  1. 함수 인자부분에 변수명을 썼다.

  2. 매개변수 부분에 {} 쓰고 안에 부시고자 하는 key를 썼다.

Array Destructuring

Example

매개변수에도 배열 Destructuring

  1. 함수의 인자값으로 배열 변수명을 적는다.

  2. 매개변수에 []을 작성하고 안에 지정하고자 부시고자 하는 매개변수 명을 적는다.

rest parameter + destructuring

example 1

example 2

풀이

처음에 원했던 return c를 했을 때 3을 도출하는 법

구조가 일치해야 한다

Last updated

Was this helpful?