개발자 박가나

[JavaScript] ES6 문법 본문

개념/JavaScript

[JavaScript] ES6 문법

gnchoco97 2024. 10. 13. 14:06
📌 이번 포스팅에서 배울 내용

     ▶ ES6 문법

          ▷ let, const

          ▷ 화살표 함수

          ▷ 삼항 연산자

          ▷ 구조 분해 할당

          ▷ 단축 속성명

          ▷ 전개 구문

          ▷ 나머지 매개변수

          ▷ 템플릿 리터럴

          ▷ default export / named export

 


 

ES6 (ECMAScript 6)

2015년에 발표된 JavaScript의 버전 중 하나로, 새로운 문법과 기능을 대규모로 도입하여 개발자들이 보다 쉽고 효율적으로 코드를 작성할 수 있도록 개선하였다.

 

🔥 ES6는 대규모 문법적 향상 및 변경으로 인해 자주 언급되는 내용이다.


let, const

기존에 존재하던  var  키워드를 대체해서 나온 변수 선언 키워드이다.

  •  var  : 재할당 가능, 재선언 가능
var name = "John"
console.log(name) // John

// 재할당
name = "Jane"
console.log(name) // Jane

// 재선언
var name = "Kim"
console.log(name) // Kim

 

  •  let  : 재할당 가능, 재선언 불가능
let name = "John"
console.log(name) // John

// 재할당
name = "Jane"
console.log(name) // Jane

// 재선언
let name = "Kim" // SyntaxError: Identifier 'name' has already been declared

 

  •  const  : 재할당 불가능, 재선언 불가능
const name = "John"
console.log(name) // John

// 재할당
name = "Jane" // TypeError: Assignment to constant variable.

// 재선언
const name = "Kim" // SyntaxError: Identifier 'name' has already been declared

화살표 함수 (Arrow Function) 

 function  키워드 없이 함수를 만드는 방법이다. 코드가 한 줄일 경우  return  키워드도 생략 가능하다.

const add = (a, b) => {
	return a + b
}

const add = (a, b) => a + b

삼항 연산자

조건문의 결과에 따라 다른 값을 할당할 수 있는 문법이다.

조건 ? true일 경우의 값 : false일 경우의 값
console.log(true ? "참" : "거짓") // 참
console.log(false ? "참" : "거짓") // 거짓

구조 분해 할당 (Destructuring)

배열이나 객체의 속성을 분해해서 그 값을 변수에 담을 수 있게 해주는 문법이다.

/* 배열 */

let [value1, value2] = [1, "new"]
console.log(value1, value2) // 1 new

let arr = ["John", "Jane", "Kim"]
let [a, b, c] = arr
console.log(a, b, c) // John Jane Kim

let [a, b, c, d] = arr
console.log(a, b, c, d) // John Jane Kim undefined

let [a, b, c, d = "Lee"] = arr
console.log(a, b, c, d) // John Jane Kim Lee
/* 객체 */

let user = { name: "John", age: 30 }
let { name, age } = user
console.log(name, age) // John 30

let { name: newName, age: newAge } = user
console.log(name, age) // ReferenceError: name is not defined
console.log(newName, newAge) // John 30

let { name, age, gender } = user
console.log(name, age, gender) // John 30 undefined

let { name, age, gender = "male" } = user
console.log(name, age, gender) // John 30 male

단축 속성명

객체의 key와 value 값이 동일하면 생략 가능하다.

const name = "John"
const age = "30"

const obj = { name: name, age: age }

const obj = { name, age }

전개 구문 (Spread)

배열이나 객체를 전개하는 문법이다.

/* 배열 */

let arr = [1, 2, 3]
let newArr = [...arr, 4]
console.log(newArr) // [1, 2, 3, 4]
/* 객체 */

let user1 = { name: "John", age: 30 }
let user2 = { ...user }

user2.name = "Jane"

console.log(user1) // { name: "John", age: 30 }
console.log(user2) // { name: "Jane", age: 30 }

나머지 매개변수

function print(a, b, ...args) {
	console.log(...args)
}

print(1, 2, 3) // 3
print(1, 2, 3, 4, 5, 6, 7) // 3 4 5 6 7

템플릿 리터럴

여러 줄로 이루어진 문자열과 문자 보간 기능을 사용할 수 있는 표현식이다.

const user = { name: "John", gender: "male" }

let str = `
    My name is ${user.name}
    I'm male ${user.gender}
`

default export  /  named export

default export

  • 외부 파일에서는 사용자가 원하는 이름으로 import 가능
// js file
const Name = () => {}
export default Name

// other file 
import newName from "name.js"

 

named export

  • 하나의 js 파일에서 여러 개의 변수 및 클래스 export 가능
  • 외부 파일에서는 js 파일에서 지정한 이름으로 import 가능
  • 다른 이름을 사용하고 싶으면  as  키워드 사용
// js file
export const Name1 = () => {}
export const Name2 = () => {}

// other file
import { Name1, Name2 } from "name.js"
import { Name1 as newName1, Name2 as newName2} from "name.js"

 

'개념 > JavaScript' 카테고리의 다른 글

[JavaScript] Map & Set  (1) 2024.10.17
[JavaScript] 콜백 함수 & 비동기 제어  (0) 2024.10.14
[JavaScript] 조건문 & 반복문  (0) 2024.10.13
[JavaScript] 일급 객체로서의 함수  (1) 2024.10.13
[JavaScript] 호이스팅  (0) 2024.10.13