Node.js 공부기록 (6) 모던 자바스크립트, let 과 const

Node.js 공부기록 (6) 모던 자바스크립트, let 과 const

모던 자바스크립트

https://tc39.es/

비영리 기구 Ecma International은 JavaScript를 포함한 다양한 기술 표준 정립을 목적으로 하는 단체임

그 중 TC39 위원회(committee)는 자바스크립트(ECMAScript) 표준 제정을 담당함

이 위원회에는 MS, Google, Apple 등 웹 기술과 관계가 깊은 거대 기술 벤더들이 참여함

ECMAScript == JavaScript 

(에크마스크립트는 자바스크립트의 기술적인 표준을 뜻함

상표권 문제로 자바스크립트라고 부를 수 없는 것이지, 에크마스크립트는 자바스크립트라고 보면 됨.)

대부분의 논의는 github에 공개되어 있음

https://github.com/tc39 에서 People을 클릭하면 위원회 인원들을 볼 수 있음 (자바스크립트 표준 제정 일을 하심)

https://tc39.es/process-document/

* The TC3 Process

Stage 0 (Strawperson) – 누구나 제출은 가능함. 초안에 해당됨

Stage 1 (Proposal) – 여기서부터 좀 의미가 있는데, 이끌어갈 챔피언을 선정함. 폴리필, 데모 등이 필요함

Stage 2 (Draft)

Stage 3 (Candidate)

Stage 4 (Finished) – 거의 모든 브라우저에 적용된 상태

뒤로 갈 수록 성숙한 상태라고 보면 됨 

어떤 프로포절들이 있는지 살펴보자. 아래 리파지토리 참고

https://github.com/tc39/proposals

자바스크립트 라는 언어가 어떻게 진화하고 있는지 과정을 퍼블릭하게 조회 가능함

https://node.green/ 에서 Node의 각 버전별로 지원하는 ECMAScript 기능을 확인 가능함

—–

<let, const>

let taste = ‘hot’

let food = ‘chicken’

const dish = `${taste} ${food}` // ‘hot chicken’

hoisting 규칙이 없고, block scoping을 지원함.

따라서 var보다 훨씬 에측 가능한 코드를 짤 수 있게 해줌

* const : constant(상수)에서 따온 단어

* let은 레퍼런스가 바뀔 수 있고, const는 바뀔 수 없음

let x = 1

x = 2 // OK

const y = 1

y = 2 // Uncaught TypeError: Assignment to constant variable.

* var와는 달리 let과 const는 같은 스코프 내에서 같은 변수를 두 번 이상 정의할 수 없음

var x = 1

var x = 2 // OK

let x = 1

let x = 2 // Uncaught SyntaxError: Identifier ‘x’ has already been declared

* var 와는 달리 let과 const는 변수를 정의하기 전에는 사용할 수 없음

console.log(x) // undefined

var x = 0

console.log(x) // ReferenceError: Cannot access ‘x’ before initialization

const x = 0

* block scoping

(let 과 const는 block scoping rule을 따름.

var 는 function scoping rule을 따름)

var x = 1

{

    var x = 2

console.log(x) // 2

}

console.log(x) // 2

const x = 1

{

    const x = 2

console.log(x) // 2

}

console.log(x) // 1

* let과 const의 예측 가능성과 유지보수성이 var보다 훨씬 뛰어남

* 가능하다면 const만 쓰고, 필요한 경우에 한해 let을 쓰고, var는 절대 쓰지 말것