항해99

항해 21일차 WIL

노엠디엔 2022. 11. 27. 21:08

항해 21일 차 이번 주도 거의 백 투 더 퓨처 느낌으로 타임머신을 탄 기분이었다. 

시간 개념은 사라진지 오래고, 오늘이 며칠인지 오늘 점심에 알았다..

이번 주는 자바스크립트 알고리즘 문제를 풀면서 정말 한 문제 한 문제가 산 넘어 산이었던 것 같다.

또 React주특기 팀이 새로 만들어지고 React를 사용해 보았는데 너무 재미있어서 시간 가는 줄 몰랐던 것 같다.

 

이번 주차 과제로 ES에 대해 알아보았다.

자바스크립트는 1990년대 Netscape 회사의 Brendan Eich 라는 사람에 의해 최초 개발되었으며, 자바스크립트가 잘 되자, MS에서 Jscript라는 언어를 개발해 IE에 탑재하였는데, 이 두 스크립트가 너무 제가 각이라, 표준이 필요하게 되었다고 한다. 표준을 위해 자바스크립트를 ECMA(European Computer Manufactures Association)라는 정보와 통신시스템의 비영리 표준 기구에 제출하였고 표준에 대한 작업을 ECMA-262란 이름으로 1996년 11월에 시작해 1997년 6월에 채택되었다고 한다.

 

ES란 ECMA Script의 약자이며. ES5는 ECMA Script5의 규격을 따른다고 생각하면 된다.

JavaScript와 ECMA Script

둘 다 뒤에 Script라는 키워드가 붙지만, 자바스크립트는 언어이고, ECMA 스크립트는 규격, 표준 즉, 스펙을 말한다.

  • ES3(1999)
    우리가 흔히 말하는 자바스크립이며 . 함수 단위의 스코프, 호이 스팅, 모듈화 미지원, 프로토타입, 클로저 등등 자바스크립트의 기본적인 특징들이 들어있다. 
    대부분의 브라우저에서 지원하고, IE8까지 크로스 브라우징 하는 환경이면 ES3를 쓰고 있다고 생각하면 된다고 한다.
  • ES5(2009)
    4는 너무 급변하는 내용이 있었던지 거절되고, 그 후에 점진적인 개선을 하고자 5가 나왔고, 기본적으로 IE9부터 본격적으로 지원을 하지만 es5-shim을 사용하면 하위 버전에서도 특정 기능들을 지원해줍니다.
    1. 배열과 관련해서 새로운 메서드들이 생겼는데 대표적으로 forEach, map, filter, reduce, some, every와 같은 메서드가 생겼습니다. 이 메소드들은 개발자가 반복 횟수나 조건을 잘못 입력하는 등의 실수를 줄여주는 효과가 있습니다.
    2. object에 대한 getter/setter 지원
    3. 자바스크립트 strict 모드 지원(더욱 세심하게 문법 검사를 합니다.)
    4. JSON 지원(과거에는 XML을 사용하다가, json이 뜨면서 지원하게 되었습니다.)
    5. bind() 메소드가 생겼습니다. (this를 강제로 bind 시켜주는 메서드입니다.)

ES 2015(ES6)
원래는 ES6 였는데 사람들이 끝자리인 6과 2016년을 연관 짓는 습성 때문에 2016년에 나온 걸로 착각을 해서인지 ES2015로 바꾼 것 같다고 한다.

1. let, const 키워드 추가
기존의 변수는 함수 scope를 가진 var 키워드를 이용하여 선언하였습니다. 때문에 block scope를 가진 let과 const 키워드를 추가하였습니다. 기존에는 상수형 키워드가 없어 CONST_TEST와 같이 대문자로 상수임을 표시했다면, ES 6부터 const 키워드가 추가되어 값의 변경을 통제합니다.
2. arrow 문법 지원

arrow 문법은 두 가지의 장점을 제공합니다. 첫 번째는 익숙하면 편하고 간결해진 코드를 작성할 수 있습니다. 두 번째는 this를 바인딩하지 않습니다.(다르게 말하면, this는 해당 scope의 this와 같습니다.)

 

ECMA 2017(ES8)
async - await의 기능의 추가가 대표적으로 있습니다.

- async - await
위에서 ES6에서 Callback Hell을 해결하기 위해 Promise가 도입되었다고 했는데 async-await도 Promise처럼 Callback을 해결할 뿐만 아니라 좀 더 직관적이고 단순하게 코드를 만들 수 있다.
코드로는
async function 함수명() {
    await 비동기_처리_메서드_명();
}
으로 이루어져 있고 먼저 함수의 앞에 async라는 예약어를 붙입니다. 그러고 나서 함수의 내부 로직 중 HTTP 통신을 하는 비동기 처리 코드 앞에 await을 붙입니다. 여기서 주의해야 할  점은 비동기 처리 메서드가 꼭 프로미스 객체를 반환해야 awiat가 의도한 대로 동작하며 일반적으로 await의 대상이 되는 비동기 처리 코드는 Axios 등 프로미스를 반환하는 API 호출 함수이다.

 

출처

https://usefultoknow.tistory.com/entry/ECMA-SCript%EB%9E%80-ES%EB%9E%80

'항해99' 카테고리의 다른 글

항해 49일차  (0) 2022.12.25
항해 42일차  (0) 2022.12.18
항해 35일차  (0) 2022.12.11
항해28일차  (0) 2022.12.04
항해 14일 WIL  (0) 2022.11.20