ECMAscript6 (ES6)는 JavaScript의 버전 중 하나로 2015년에 발표되었다.
ES6는 이전 버전인 ES5에서 새로운 문법과 기능을 도입하여 JavaScript 개발자들이 보다 쉽고
효율적으로 코드를 작성할 수 있도록 개선하였다.
var, let, cons의 차이를 알 수 있기 위해서는 선언
과 할당
의 의미를 정확히 알고 있어야 한다.
- 선언 : 변수명을 자바스크립트 엔진에 알리는 것.
- 할당 : 변수에 값을 저장하는 것 (
=
할당연산자)
let
과 const의 특징재할당
은 가능
하고, 재선언
은 불가능
let value = 'value1'
console.log(value) // value1
value = 'value2' // 재할당 가능
console.log(value) // value2
let value = "value3" // 재선언 불가능, syntaxError : Identifier 'value' has already been declared
재할당
,재선언
이 불가능, 초기값이 없으면 선언 불가능const value; // 초기값 없이 선언 불가능
---
const value = "value1"
console.log(value) // value1
value = "value2" // 재할당 불가능
const value = "value2" // 재선언 불가능
var name = "name1"
console.log(name) // name1
var name = "name2"
console.log(name) // name2
console.log(name) // undefined
var name = "name1"
function이나 return
키워드 없이 함수를 만드는 방법이다.=> ES6에서 처음 소개 된 개념
// ES5
function func() {
return true;
}
// ES6
const func() => true
const func() => {
return true;
}
()=>{}
parm => {}
(parm1, parm2, parm3, ...prams) => {}
// 익명 화살표 함수
() => {}
function
은 호출을 할 때 this
가 정해지지만, 화살표 함수는 선언할 때 this
가 정해짐.
condition ? expr1 : expr2
console.log(true ? "참" : "거짓") // 참
cosnole.log(false ? "참" : "거짓") // 거짓
구조 분해 할당이란?
배열[]이나 객체{}의 속성을 분해해서 그 값을 변수에 담을 수 있게 해주는 문법이다.
// 배열의 경우
let [value1, value2] = [1, "new"];
console.log(value1); // 1
console.log(value2); // "new"
let arr = ["value", "value2", "value3"];
let [a, b, c] = arr;
console.log(a, b, c) // value1, value2, value3
// let [a,b,c] = arr; 은 아래와 동일!
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];
let [a,b,c,d] = arr
console.log(d) // undefined
let [a,b,c,d = 4] = arr
console.log(d) // 4
// 객체의 경우
let user = {name: "nbc", age: 30};
let {name, age} = user;
// let name = user.name;
// let age = user.age;
console.log(name, age) // nbc 30
// 새로운 이름으로 할당
let {name: newName, age: newAge} = user;
console.log(name, age) // ReferenceError: name is not defined
console.log(newName, newAge) //nbc 30
let {name, age, birthDay} = user;
console.log(birthDay) // undefined
let {name, age, birthDay = "today"} = user;
console.log(birthDay) // today
객체의 key와 value 값이 같다면, 생략 가능해요.
const name = "nbc"
const age = "30"
const obj = {
name,
age: newAge
}
const obj = {
name,
age
}
배열이나 객체를 전개하는 문법이다, 구조분해할당과 함께 정말 많이 사용된다.
// 배열
let arr = [1, 2, 3];
let newArr = [...arr, 4];
console.log(newArr) // [1, 2, 3, 4]
// 객체
let user = {name:"wook", age:27}
let user1 = {...user}
user2.name = "wook2"
console.log(user.name) // wook
console.log(user2.name) // wook2
function func (a, b, ...args) {
console.log(...args)
}
func(1, 2, 3) // 3
func(1, 2, 3, 4, 5, 6, 7) // 3 4 5 6 7
여러 줄로 이뤄진 문자열과 문자 보간기능을 사용하게 만들어 주는 문자열 리터럴 표현식이다.
백틱과 ${}
로 표현된다.
"string"
"string"
new String("string")
`string text`
`string text
string text line2`
`string text ${value} text`
// name.js
const Name = () => {
}
export default Name
// other file
// 아무 이름으로 import 가능
import newName from "name.js"
import NameFromOtherModule from "name.js"
// 하나의 파일에서 여러 변수/클래스 등을 export 하는 것이 가능
export const Name1 = () => {
}
export const Name2 = () => {
}
// other file
import {Name1, Name2} from "name.js"
import {newName} from "name.js" // x
// 다른 이름으로 바꾸려면 as 사용
import {Name1 as newName, Name2} from "name.js"
// default export 처럼 가져오려면 * 사용
import * as NameModule from "name.js"
console.log(NameModule.Name1)