javascript - es6 개발

CHan·2023년 4월 2일

ES6

1. ES6(ECMAScript 2015)

  • 2015년에 출시된 자바스크립트 표준으로 6번째라는 의미로 ES6이라고 한다.

2. ES6의 새로운 기능 및 사용 예

1) let, const 키워드

  • 기본적으로 변수를 선언하기 위한 키워드로 기존의 var 키워드는 같은 이름의 중복을 허용하거나 global로 동작하는 등의 변수 고유의 속성을 해쳐서 공간 낭비 및 각종 에러를 발생시킬 수 있는데 let과 const는 중복 선언이 금지되고 global로 동작하지 않아 고유의 속성을 해치지 않으며, const는 한 번 선언된 값은 변경이 불가능하도록 되어 있다.
    (단, const의 타입이 객체인 경우 참조된 속성 값은 변경할 수 있다.)
// var 사용시
 
var a = 1; // 전역 변수
{
	var a= 2; // 지역 변수
    var b = 3; // 지역 변수
}
console.log(a);
console.log(b);

결과 :
2
3
// let 사용시

let a = 1;
{
	let a = 2; // 지역 변수
    let b = 3; // 지역 변수
}
console.log(a);
console.log(b);

결과 :
1 
// {}안의 지역 변수로 변경한 값으로 변하지 않음

ReferenceError: bar is not defined 
// {}안의 지역
변수의 값은 외부에서 사용 안된다.
// const 사용 예

const a= 1;
a= 1; 
// Assignment to constant variable.
// 재할당이 안된다.

const a; 
// Missing initializer in const declaration
// const는 선언과 동시에 값이 할당되어야 한다.

const employee = { name : 'hong', age: 24};
employee = {};
// Assignment to constant variable.
// 재할당이 안된다.

//const 객체 속성 변경 예

employee.name = 'kim';
결과 :
{ name: 'kim', age: 24} // name이 kim으로 변경됨

2) 화살표 함수

  • 기존의 함수 표현식인 function 없이 () => 를 이용해 간결하게 함수를 만드는 방법으로, 기존의 function 함수와 비교하여 this 바인딩이 다르게 적용되며, 입력 받는 매개 변수가 하나일 때는 () 생략이 가능하다.
// es5 방식의 function

function sum(a,b) {
	return a+b;
}
sum(1,4)
결과 : 5
// es6 방식의 function

const sum = (a,b) => a+b;
sum(1,)
결과 : 5
// 입력 변수가 하나일 때 () 괄호 생략 가능

let sum = a => { return a + 10 };
sum(3)
결과 : 13
// 하나의 실행결과만 필요할 때 {} 괄호 생략 가능

let sum = (a,b) => a + b;
sum(1,4)
결과 : 5

3) Default Parameters

  • 기존의 함수는 함수 내부에서 초기값을 선언하여 사용했으나 es6에서는 매개 변수에 초기값을 줄 수 있다.
// es5

var sum = function(a,b) {
	var a = a || 1;
    var b = b || 2;
    return a + b;
}
sum();
sum(3,4);
결과 :
3
7
// es6

var sum = (a = 1, b = 2) => { return a + b };
sum();
sum(3, 4)
결과 :
3
7

4) Template literals

  • 새로운 문자열 표기법이면, 따옴표나 문자 대신 백틱(backtic) 문자 ` 를 사용하여 문자열을 처리하며, 기존과 달리 문자열 내에 표기된 그대로 적용된다.
    (공백이나 백슬래쉬 사용하지 않아도 된다.)
// es5 문자열 처리

var fname = 'hong';
var lname = 'gil dong';
var memo = '나이 : 26 \n 경력 : 2년 \n';
var employee = 'my name is ' + fname + ' ' + lname + ' \n ' + memo;

console.log(employee);
결과 :
my name is hong gil dong
나이 : 26
경력 : 2년
// es6 문자열 처리

let fname = 'hong';
let lname = 'gil dong';

// 백틱문자(`)를 사용하게 되면 공백, 줄바꿈 표시를 하지 않아도 된다.

let memo = `나이 : 26
경력 : 2년`;
let employee = `my name is ${fname} ${lname}
${memo}`;

console.log(employee);
결과 :
my name is hong gil dong
나이 : 26
경력 : 2년

5) Rest Parameter (가변 함수)

  • 함수 작성시 마지막에 남는 나머지 매개변수를 받을 때 변수를 배열처럼 가변적으로 처리할 수 있는 구문으로 세개(...)의 점을 앞에 붙여서 작성하고, 항상 입력받는 함수의 마지막 변수 위치에서만 전개 가능하다. 물론 함수가 입력받는 매개 변수가 하나일 경우는 Rest Parameter만 사용해도 문제가 없다.
fucntion sum(...theArgs) {

	// 가변 변수를 합산하여 sum을 내는 구문
    return theArgs.reduce((previous, current) => {
 		return previous + current;
 	});
}

console.log(sum(1,2,3));
결과 :
6

console.log(sum(1,2,3,4));
결과 :
10

6) spread operator (전개 구문)

  • 배열 혹은 문자열 등과 같이 반복 가능하게 풀어서 요소 하나 하나 전개하여 실행시키는 구문으로 Rest Parameter 와 같이 세 개(...)의 점을 사용해서 사용한다.
function sum(x, y, z) {
	return x + y + z;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers));
결과 :
6

console.log(sum.apply(null, numbers));
결과 :
6

const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [1, 2, ...arr1, ...arr2, 9, 10];
결과 :
[1, 2, 1, 2, 3, 4, 9, 10]
profile
Hello World!

0개의 댓글