자바스크립트를 처음 배울 때는 대체로 ES5로 배웠던 것 같다. 알고리즘 코드를 리뷰하면서 같은 코드를 다르게 표현하는 방법을 보게 되었고, ES5와 ES6의 표현의 차이가 크다는 것을 알았다. 공부 좀 미리한 친구들은 ES6 버전으로 긴 코드를 팍팍 줄여 작성하고 있었음.
두 가지 모두 알고 있어야 한다는데 현재의 나는 화살표 함수가 굉장히 헷갈리는 중.
이제라도 주요 달라진 점을 정리하고 공부 하면서 추가해 나가려고 합니다.
변수 선언
var : 함수 스코프를 가지므로 블록과 관계 없이 접근할 수 있음.
let : 사용법은 var 문과 같지만 블록 스코프를 가지며, 블록 밖에서는 변수에 접근할 수 없음.
const : let 과 동일한 블록 스코프를 가지며, 한 번만 할당할 수 있는 변수(상수)를 선언함.
if(true) {
var x = 3;
}
console.log(x); //3
if(true) {
const y = 3;
}
console.log(y); //Uncaught ReferenceError: y is not defined
//y 값의 블록 범위를 벗어났으므로 오류 발생.
유효 범위를 벗어나면 위와 같이 에러가 발생, 이제 var는 let과 const가 대체한 느낌이다.
노마드코더나 다른 코딩 강좌들을 보면 기본적을 const를 사용하는 것 같다. 다른 값을 대입해야 하는 상황에서만 let을 쓰고, 목적이 있을 경우에만 var를 사용하는 듯.
const 문으로 선언한 상수 값은 수정할 수 없지만, 상수 값이 객체 또는 배열인경우는 프로퍼티를 수정할 수 있음.
//변수가 여러 개일 때는 쉼표로 구분하여 동시 선언이 가능함
let a, b, c;
let a = 1, b = 2, c = 3;
템플릿 문자열
let num1 = 1;
let num2 = 2;
let sum = 3;
let resultES5 = num1 + '더하기 ' + num2 + '는 \'' + sum + '\'';
console.log(resultES5); //1더하기 2는 '3'
let resultES6 = `${num1}더하기 ${num2}는 '${sum}'`;
console.log(resultES6); //1더하기 2는 '3'
resultES5와 resultES6 의 결과 값은 같다.
${변수} 형식으로 변수를 더하기 기호 없이 문자열에 넣을 수 있다. 플레이스홀더 같은 것.
기존에는 문자열 안에 '따옴표' 를 넣는게 번거롭고 가독성도 떨어졌지만, ES6 에서는 백틱(`)을 사용하기 때문에 큰 따옴표, 작은 따옴표와 함께 사용할 수 있다.
화살표 함수
화살표 함수에서는 function 선언 대신 => 기호로 함수를 선언함.
function add1(a, b) {
return a + b;
}
const add2 = (a, b) => {
return a + b;
};
const add3 = (a, b) => a + b;
const add4 = (a, b) => (a + b);
add1, add2, add3, add4 모두 같은 기능을 하는 함수다.
function not1(x) {
return !x;
}
const not2 = x => !x; //매개변수가 하나이면 괄호 생략 가능
not1, not2도 같은 기능을 한다.
'Coding > TIL (Today I Learned)' 카테고리의 다른 글
npm, Package.json (0) | 2019.11.29 |
---|---|
Javascript runtime, Node.js, NVM (0) | 2019.11.28 |
[Reference] 현직 개발자들의 이야기 (0) | 2019.11.27 |
JavaScript 얕은 복사 vs 깊은 복사 (0) | 2019.11.18 |
Git 01. 풀리퀘스트(pull request) 방법 (0) | 2019.11.14 |