기존의 var 키워드는 암묵적으로 전역 변수를 양산할 가능성이 크고
의도하지 않은 변수값의 변경이 일어날 가능성이 크다
이러한 단점을 보완하기 위해 let과 const 키워드가 도입되었다
var
재선언 가능 , 재할당 가능
let
재선언 불가능, 재할당 가능
const
재선언 불가능, 재할당 불가능
console.log(`1 + 1 = ${1 + 1}`); // "1 + 1 = 2"
function 키워드 대신 화살표(=>)를 사용하여 보다 간략한 방법으로 함수를 선언할 수 있다
// 매개변수 지정 방법
() => { ... } // 매개변수가 없을 경우
x => { ... } // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다.
(x, y) => { ... } // 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다.
// 함수 몸체 지정 방법
x => { return x * x } // single line block
x => x * x // 함수 몸체가 한줄의 구문이라면 중괄호를 생략할 수 있으며 암묵적으로 return된다
() => { return { a: 1 }; }
() => ({ a: 1 }) // 위 표현과 동일하다. 객체 반환시 소괄호를 사용한다.
() => { // multi line block.
const x = 10;
return x * x;
};
<일반 함수와 화살표 함수의 가장 큰 차이점 : this>
일반함수는 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다
생성자 함수와 객체의 메소드를 제외한 모든 함수(내부 함수, 콜백 함수 포함) 내부의 this는 전역 객체(window)를 가리킨다
화살표 함수의 this는 언제나 상위 스코프의 this를 가리킨다
=> 일반 함수와 달리 call , apply, bind 메소드를 사용하여 this를 변경할 수 없다
//클래스 선언문
class Person {
// constructor(생성자). 이름을 바꿀 수 없다.
constructor(name) {
// this는 클래스가 생성할 인스턴스를 가리킨다.
// _name은 클래스 필드이다.
this._name = name;
}
}
// 인스턴스 생성
const me = new Person('Lee');
console.log(me); // Person {_name: "Lee"}
구조분해 할당이란 펼치다란 뜻으로 객체나 배열에서 사용하며, 값을 해체한 후, 개별 값을 변수에 새로 할당하는 과정이다
// 배열에서 Spread 사용
const arr = [1, 2, 3];
const [one, two, three] = arr;
one // 1
two // 2
three // 3
// 객체에서 Spread 사용
const obj = {
firstName: '토끼',
lastName: '산'
};
const { firstName, lastName } = obj;
firstName // 토끼
lastName // 산
자바스크립트에서 비동기 처리를 기존에는 콜백 함수를 사용한, 콜백 패턴을 사용하였다.결과론적으로, 콜백헬을 발생시켰다
이를 해결하기 위해 프로미스가 도입되었고, 프로미스 후속처리 메소드를 이용해 에러 처리를 효과적으로 할 수 있게 되었다