ECMAScript 2015(ES6)

ES6

최근에 공부하기 시작했던 script 버전이 2015년에 출시한 es6 였다.
let/const, 화살표 함수, Promise, import/export, Class, default Parameter 등등..
아무래도 새로운 버전이 나오는데 시간이 오래 걸려서 인지 작정하고 여러가지가 나오기 시작한거 같다..

let / const

var 에 이어서 새로운 변수 선언. var 로 선언한 변수는 hoisting이 가능했지만, let / const 로 선언한 변수는 hoisting 이 불가능하고, 선언한 블럭 내에서만 유효하다. 또한 let 은 값을 변경할 수 있는 변수, const 는 값을 변경할 수 없는 상수로 정의할 수 있다.

Arrow Functions

기존의 function 구문을 간단하게 표현할 수 있는 방식. 코드는 짧아지고 간결하지만, 익명 함수라 화살표 내에서의 this 구문은 사용할 수 없다. 아니 사용할 수 없다기 보다, 자기 자신을 바라보지 않는다. function 구문 안에서 화살표 함수를 사용하여 this 를 사용한다면, function 구문을 바라보고 있다. 하지만 화살표 함수 안에서 화살표 함수를 사용하여 this 를 사용한다면 전역객체를 바라본다? this에 관한 개념은, es5 에 도입된 내용으로 es6 이후에는 따로 변수로 선언하여 사용하는 방법이 있다? 

Class

자바에서의 class 와 같이, 상위 클래스를 상속받는 하위 클래스 구조로 만들 수 있다. 하위 클래스는 상위 클래스의 선언값을 모두 사용할 수 있다. 클래스 생성시에는 생성자(constructor) 는 필수가 아닌듯 하다.. 그래도 비어있는 생성자라도 있는게 좋겠다..

Promise

비동기 방식의 객체. Promise 객체 생성시 resolve, reject 를 인자로 넘겨준다.
resolve 는 then 의 callback 함수, reject 는 catch 의 callback 함수를 실행한다. 보통 Promise 내부 함수가 정상적으로 끝나면 resolve 를, 에러 발생시 reject 를 반환한다. 또한 Parameter 를 전달할 수도 있다.

Symbol

고유한 객체. 같은 값으로 Symbol 을 생성해도 비교해보면 다른값? 이다.
하지만 지금 MDN 에서 Properties 의 iterator 와 method 의 for() 구문을 제외하고는 거의 모든게 Translate 상태.. 

Default Function Parameter 

함수의 매개변수에 기본값을 지정한다. 인자가 없거나 undefined 일 때, 기본값으로 초기화 한다.


Rest Parameter

동적인 매개변수를 사용하여 함수에 인자를 전달할때, 배열 형태로 값을 받을 수 있다.

Array.find()

배열 각각의 요소에 대하여 주어진 함수에 통과하는 요소의 값을 반환한다. 통과하는 요소가 없다면 undefined 를 반환한다.

Array.findIndex()

배열 각각의 요소에 대하여 주어진 함수에 통과하는 요소의 인덱스를 반환한다. 통과하는 요소가 없다면 -1 를 반환한다.

Number 관련 속성, 함수

  • Number.EPSILON => 한번도 사용한적이 없다.. 하지만 이런 상수도 있다..
  • Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER => Javascript 에서 표현할 수 있는 안전한 최소, 최대의 정수값.
  • Number.isInteger() => 주어진 값이 정수인지 판별.
  • Number.isSafeInteger() => 주어진 값이 안전한 정수인지 판별.
  • Number.isNaN() => 주어진 값이 NaN 인지 판별.. 전역 함수보다 엄격하게 판별..

전역 함수

  • isFinite() => 주어진 값이 유한수인지 판별.

구조 분해 할당

객체 및 배열에 대하여 원하는 값만을 키값으로 하여 꺼내올 수 있다. 객체 구조가 복잡해도 키값만 잘 매칭 한다면 편하게 사용할 수 있다. 게다가 꼭 키값이 아닌 다른 이름의 변수로도 할당할 수 있어서 객체형태의 변수를 사용하기에 편하다.. let/const, default Parameter, rest Parameter 와 함께 ES6 의 주요 기능 중 하나라고 생각한다. 하지만 '구조 분해 할당' 이라는 어휘가 한번에 인식되지가 않는다... 그냥 본능적으로 사용할 뿐..

iterator

Iterator 에 관하여서는 MDN 에서 제공하고 있지 않다... 한글 버전의 MDN 에서 링크는 있지만 페이지가 존재하지 않고, 영어 버전의 MDN 에서는 링크 자체도 존재하지 않는다.. 더 찾아봐야 할듯..

generator

한번도 사용해 본적도 들어본적도 없는.. 함수에 미리 반환할 n개의 결과값을 yield 로 지정하고, 함수를 객체화 하고 사용하는 듯.. 카운팅이나 뭐 그럴때 쓸것도 같지만.. 현재는 사용처가 떠오르지 않는다.. 그래도 알아놔서 나쁠건 없을듯..

import / export

script 가 모듈화 되면서 html 에서 참조하지 않고, script 파일에서 다른 script 를 참조할 수 있다. 하지만 export 가 되어진 파일이나 함수, 변수만 참조할 수 있다. 각각 역할이 다른 함수들을 모듈화 하여 하나로 묶는것도 가능하다. 하나의 파일에서 보기도 힘들게 코딩하지 않아도 된다! 이것도 ES6 의 주요 기능 중 하나라고 생각한다..

댓글

이 블로그의 인기 게시물

ECMAScript 2009 (ES5) 이전

ECMAScript 2018

ECMAScript 2019