노드js관련 공부를 시작하였고, 이를 위해 javascript문법을 공부하기 시작했으며, 자바스크립트는 ES라는 표준을 가지고 있다고 알게 되었다.
ES란 ECMA Script의 약자이다. ES는 쉽게 자바스크립트의 표준이라고 생각하면 된다.
'브라우저 전쟁'에서 여러 스크립트 언어들이 있어 동일한 기능 작동을 위해서 모든 코드를 따로 작성해야하는 문제가 있었는데 이를 위해 표준화작업 노력의 결과가 ES라고 생각하면 된다.
ES버전을 얘기 할때 ES6, ES2015 이런식으로 얘기하는데, 2015년에 제정한것이 ES2015 이고 2015년에 6번째 표준이 제정되었기 때문에 ES6라고도 한다.
결국 ES6와 ES2015는 같은 표준을 일컫는다.
ES5와 ES6의 차이를 알아두면 좋은 점이 있다.
바로 새로온 신입 혹은 경력 개발자가 이전의 작업자들이 해두었던 작업 레거시 코드(누군가 남기고 간 기존 코드)를 최신 문법으로 리팩토링 할수 있냐 또는 코드의 동작 해석해서 유지보수할 수 있는가의 부분에서 이점이 있다.
그러면 두 버젼의 차이를 알아보면
- let const 키워드 추가
- 기존의 var 키워드에 비해 블록 레벨 스코프를 가지며 재할당이 가능한 let, const키워드가 추가 되었다.
- 변수에 생명주기에 영향을 끼치며, 키워드만 보아도 변수의 변화가 생기는지 알 수 있게 되었습니다.
- 호이스팅에 있어서도 변화가 생겼다.
- Arrow function 추가
- 화살표 함수가 추가되어 함수를 간결하게 나타낼 수 있게 되었다.
- 가독성 및 유지보수성이 올라갔다고 생각이 된다 (단, 기존의 함수와 this바인딩이 다릅니다.)
- 화살표 함수에선, 매개변수가 하나일 때()괄호 생략가능, {}소괄호 및 return도 생략가능합니다.
- Default parameter추가
- 기존에 함수의 매개변수에 초깃값을 작성하려면 함수 내부에서 로직이 필요 했으나, ES6이후는 함수 내부에 작성할 필요 없이 매개변수에 직접 입력 가능해짐
예시
var test = function(a, b){
var a = a || 0;
var b = b || 0;
return a * b;
}
const test2 = function(a = 0, b = 0){
return a*b;
}
- Template literal 추가
- 사용법 ``(back tik) 사용시 ${} 중괄호 앞에 달러표시를 통해 자바스크립트 표현식을 삽입 가능합니다.
- Multi-line string
- 문자열이 라인을 넘어가게 되면 관리가 불편했는데 \n 줄바꿈과 덧셈인자를 사용해야 했다.
- 백 틱을 사용하게 되면 여러 라인의 문자열도 문제가 없다.
- 클래스
- 객체 생성 방식중 하나이며, 자바스크립트는 프로토타입 기반의 객체지향 프로그래밍입니다.
- 클래스 기반의 객체지향 프로그래밍에 익숙한 개발자들의 요청에 의해 생기지 않았나 추측해봅니다.
- 객체를 생성하는 함수라고 생각이 된다.
- 함수와 동일하게 동작하지 않으며, 클래스가 엄격하며 호이스팅이 발생하지 않는것처럼 동작하는 let,const처럼 작동하게 된다.
- 모듈
- 모듈이란 재사용하기 위한 코드조각을 뜻하며, 세부사항은 캡슐화 시키고, api부분만 외부에 노출시킨 코드입니다.
- 모듈은 모듈 스코프를 가지며, export,import키워드로 사용합니다.
- 프로미스
- 비동기통신에 있어 기존에는 콜백 함수를 사용한 콜백 패섵을 사용했습니다. 결론적으로, 콜백헬을 발생시켰습니다.
- 이를 해결하기 위해 프로미스가 도입되었고, 프로미스 후속처리 메서드를 통해 에러처리를 효과적으로 할 수 있게 되었습니다.
- String메서드 (include, startWith, endsWith)
- 포함되었는지(include), 시작되는지(startWith), 끝나는지(endsWith) 메서드 추가되었습니다.
이번 주차를 통해 개발자로서 지속적으로 업데이트되는 버전과 이전버전의 공부의 필요성을 알게 되었다.
미들웨어 개념과 http가 어떤것인지에 대해 학습 하였다.