[WIL] Week I Learned week 02 - Javascript ES? ES 5 와 ES6는?

Calvin Park·2022년 7월 24일
0

ES란?

크로스 브라우징 이슈
기능이 모든 브라우저에서 동일하게 동작하지 않는 이슈
이 크로스 브라우징 이슈를 해결하기 위해 JavaScript를 표준화를 했다

ECMA Script의 약어이고, 자바스크립티의 표준 규격을 나타내는 용어이다. 또한 JavaScript를 표준화시키려고 탄생한 것이다.

ECMA는 정의?

Ecam(옛날에는 European Computer Manufacturers Association였지만 현재는 그냥 ECMA라고 한다.) 비영리 단체이며, 컴퓨터 하드웨어, 커뮤니케이션(통신), 프로그래밍 언어를 표준을 개발하는 단체이다.

Ecma International (formally European Computer Manufacturers Association) is a non-profit organization that develops standards in computer hardware, communications, and programming languages.

그럼 왜 생겨났을까?

JavaScript의 역사는 점점 깊어저 가면서, 문법의 보완이 필요하면서 버전별로 문법을 확장시키고 브라우저는 특정 버전의 기능별로 지원할 수 있도록 ES가 명세를 확정해 왔다.
ECMA Script는 JavaScript를 표준화시키고, 규격화하기 위해 만들어 졌으며 현재는 ES12(2021년6월 발표)까지 왔다.

ES5 vs ES6 차이점

  1. ES5 또는 ECMAScript 2009는 2009년애 발표가 되었으며, 객체가 인스턴스화 되는것에 초점을 두었다. 그리고 ES5는 함수 키워드를 작성하고 return을 해야 함수의 정의에 사용할 수 있었다, 마치 일반적인 자바스크립트 언어처럼.

  2. ES6 또는 ECMAScript 2015는 2015년도애 발표가 되었으며, 새로운 연산자인 arrow function => 화살표 function을 사용하게 되었다.

  3. ES5때부터 배열에 forEach, Map, filter, reduce, some, every와 같은 메소드들이 지원 되었다.

  4. ES5는 var 키워드를 사용하여 변수를 선언 하였는데, 호이스팅이 빈버하게 일어났다 이것을 방지하고자 블록 스코프를 가진 let과 const가 ES6에서 추가가 되었다.
    *호이스팅이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 활당하는 것을 의미한다. var로 선언한 변수의 경우 호이스팅시 undefined로 변수가 초기화한다.
    **let 과 const로 선언한 변수의 경우 호이스팅 시 변수를 초기화 하지않는다. 그래서 var보다는 let 또는 const를 사용하는것이 추천이 아닌 필수 인것이다.

    호이스팅(let과 const를 포함) ES6(ES2015)이전의 표준 명세에는 나타나지 않았다. 당시에 호이스팅이 JavaScript에서 실행 맹락, 특히 생성 및 실행 단계의 동작 방식을 설명하는 일반적인 방법이었다.

  5. ES6에서는 moudle의 import/export 추가가 되었다.

6.ES6애서부터 Promise가 추가가 되었다.
*자바 스크립트는 비동기적 언어이기 떄문에 callback에 대한 이슈가 많았지만, 이 부분을 해결할 수 있는 문법을 제공한다.
**그 이후 ES8(ES2017) 에서부터 Async/awat애 추가가 되었다.

  1. ES6에서부타 key와 value가 같으면 key값만적어도 가능합니다.
const person = {
	name: name,
    age: age
}

//상위와 똑같다.
const person1={
	name,
    age
}
  1. Destructuring assignment
//과거
const name = student.name
const level = student.level

//현재 
const {name, level} = student

//다른 변수로 선언
const {name: studentName, level: studentLevel} = student;
  1. spread syntax, default parameters, Ternary Operator등등 많이 생겼다.

p.s. JavaScript는 점점 더 진화해간다는 느낌을 많이 받는다. js로 개발을 하면 더 재미있고 더 쉽게 읽히는게 눈에 보인다.

출처 링크
출처 링크2

profile
Personal Velog Note

0개의 댓글