January 08, 2020
ES6 let, const 전개 문법 spread 비구조화 할당문법 클래스 문법 promise, async, await for-of? 화살표 함수 - this
var
로 선언했을 때의 scope관련 문제점을 타파하기 위해 제시된 변수 선언법
var : 함수형 스코프를 가짐 let, const 블록 스코프를 가짐.
지역 변수로만 사용하는 변수. var
와 달리 선언된 블록 안에서만 변수에 접근할 수 있음.
변하지 않는 고정값 = 상수. 한번 선언되면 재할당이 불가능함. 상수명은 대문자로 적는 것이 관례.
let foo = 1
foo = 2
console.log(foo) // 2
const foo = 1
foo = 2 // TypeError
그러나, const로 객체를 선언했을 때 객체의 내용 변경은 가능함.
기존의 function 함수를 새롭게 표현하는 방식.
function
키워드 생략// function
function foo(){
var foo = 1;
return foo;
}
foo () => {
let foo = 1;
return foo;
}
만약 매개변수가 하나만 들어간다면 ()
는 생략해도 됨. 그리고 return 값이 한줄로 구성되어 있다면 return
키워드 또한 암묵적으로 생략 가능! ㅇㅋ?
x => {
return x
}
;() => ({ a: 1 })
화살표 함수 내에서는 객체로 생성된 인스턴스를 가리키기 때문에 일반적인 함수랑은 조금 다름. this가 무조건 불러낸 자기 자신을 가리키기 떄문에 굳이 bind안해도 됨. 개개개좋음.
이전에 정리한 this의 정체 를 참고하자!
fucntion BalckDog(){
this.name = '흰둥이';
}
}
반드시 배열이나 문자열 같은 반복 가능한 문자를 분해해서 객체로 확장하는 것을 의미함.
배열을 함수의 매개변수 값으로 넣어줄 때 apply를 사용하는데 얘를 대체해서 사용함. 매개변수 안에 몇개를 넣든 상관 ㄴㄴ, 어디에서건 사용 ㅇㅋ
function myFnc(a, b, c) {
return a, b, c
}
var args = [1, 2, 3]
// myFnc.apply(null, args); // => args 배열을 두번째 인자에 넣어 전달하면 매개변수에 알아서 쏙쏙 대입
myFnc(...args)
이미 존재하는 배열을 가지고 새로운 배열을 생성할 때, concat()
, slice()
대신 전개 구문을 사용하면 훨씬! 훨씬 더 간단하게 쓸 수 있음. 배열을 복사하기 때문에 기존의 배열을 건드리지 않고 처리할 수 있음.
그러나 배열 안에 있는 배열인 2차원 배열 등에선 사용 X 기존 배열을 건드리게 됨… 아무튼
var arr1 = [0, 1, 2]
var arr2 = [3, 4, 5]
// arr1.concat(arr2); // arr1에 arr2 이어 붙이기
arr1 = [...arr1, ...arr2] // 0,1,2,3,4,5
var arr3 = [6, 7, 8]
var arr4 = [...arr3]
arr4.push(9) // 6,7,8,9
destructuring 이라고도 하는데 배열이나 객체의 형식을 파괴하여 개별적인 변수에 알아서 할당시키는 것임. 필요한 값을 추출해서 새로운 변수에 할당하고 아님 반환하던지..
const arr = [1, 2, 3]
const [one, two, three] = arr
// const one = 1; const two = 2; const three = 3 이랑 같은 결과
let [x, y, z] = [1, 2]
console.log(x, y, z) // 1 2 undefined
const obj = { abc: '하이', def: 'ㄴㄴ' }
const { abc, def } = obj // abc = '하이', def = 'ㄴㄴ'
자바스크립트는 함수형 프로토타입 기반의 언어임. 생성자 함수나 프로토타입, 클로저를 통해 객체지향 개념을 구현했지만 class 키워드로 정의할 수 있게 됨.
class Person{
constructor(name){
this.name = name;
}
sayHi(){
console.log('하이 ${this.name});
}
}
const me = new Person('yerina');
me.sayHi();
console.log(me instanceof Person);