![[JavaScript] ES6](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHZHuP%2FbtsDUeUrTSo%2FICC5ruxaGuhRJa0w3Ix710%2Fimg.png)
- ๐ ES6๋ ๋ฌด์์ธ๊ฐ์?
- ๐ฅ๏ธ ES6์ ์๋ก์ด ๊ธฐ๋ฅ๋ค
- 1. let๊ณผ const
- 2. ํ์ดํ ํจ์ (Arrow Functions)
- 3. ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด (Template Literals)
- 4. ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์ (Default Parameters)
- 5. ํด๋์ค (Classes)
- 6. ๋ชจ๋ (Modules)
- ๐ค ES6๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
- 1. ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ๊ณผ ๊ฐ๋ ์ฑ ํฅ์
- 2. ๋ ๋์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- 3. ํ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํจํด ์ง์
- ๐จ ์ฃผ์ํ ์
- ๐ ๊ฒฐ๋ก
- ๐ ์ถ๊ฐ ์ ๋ณด
๐ ES6๋ ๋ฌด์์ธ๊ฐ์?
ES6, ๊ณต์์ ์ผ๋ก๋ ECMAScript 2015๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ด ์ ๋ฐ์ดํธ๋ 2015๋ ์ ๋ฐํ๋์์ด์. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์คํํ๋ ECMAScript ์ฌ์์ ์ฌ์ฏ ๋ฒ์งธ ์ฃผ์ ๋ฒ์ ์ด์ฃ . ES6๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ ๋์ ํ์ด์. ์ด๋ฌํ ๋ณํ๋ ๊ฐ๋ฐ์๋ค์ด ๋ ํจ์จ์ ์ด๊ณ ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ค์.
ES6๋ ๋ง์น ์ค๋งํธํฐ์ด ์ด์ ์ ํผ์ฒํฐ์ ๋นํด ๊ฐ์ง ํ์ ์ ์ธ ๊ธฐ๋ฅ๋ค์ฒ๋ผ, JavaScript์ ์ฝ๋ฉ ๊ฒฝํ์ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ ๊ฒ์ผ๋ก ๋ณผ ์ ์์ด์.
๐ฅ๏ธ ES6์ ์๋ก์ด ๊ธฐ๋ฅ๋ค
1. let
๊ณผ const
var
๋์let
๊ณผconst
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ด์. ์ด๋ ๋ธ๋ก ์ค์ฝํ ๋ณ์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ์ฝ๋๋ฅผ ๋ ์์ ํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค์.let
์ ๋ธ๋ก ์ค์ฝํ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐ ์ฌ์ฉํด์.const
๋ ๋ธ๋ก ์ค์ฝํ ์ฝ๊ธฐ ์ ์ฉ ์์๋ฅผ ์ ์ธํ๋ ๋ฐ ์ฌ์ฉํด์.
let x = 10;
if (x === 10) {
let x = 20; // ๋ค๋ฅธ ๋ณ์
console.log(x); // 20: ๋ธ๋ก ์ค์ฝํ ๋ด๋ถ์ x
}
console.log(x); // 10: ๋ธ๋ก ์ค์ฝํ ์ธ๋ถ์ x
const y = 50;
console.log(y);
// y = 100; // ์ค๋ฅ: const๋ก ์ ์ธ๋ ๋ณ์๋ ์ฌํ ๋น ๋ถ๊ฐ
2. ํ์ดํ ํจ์ (Arrow Functions)
function
ํค์๋ ๋์=>
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฒฐํ๊ฒ ํจ์๋ฅผ ํํํ ์ ์์ด์. ์ด๋ ํนํ ์ฝ๋ฐฑ ํจ์์์ ์ ์ฉํด์.
const add = (a, b) => a + b;
console.log(add(5, 3)); // 8
3. ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด (Template Literals)
- ๋ฐฑํฑ(`)์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ํํํ๊ณ ,
${}
๊ตฌ๋ฌธ์ ํตํด ์ฝ๊ฒ ๋ณ์๋ฅผ ๋ฌธ์์ด์ ์ฝ์ ํ ์ ์์ด์.
const name = "Jane";
console.log(`Hello, ${name}!`); // Hello, Jane!
4. ๊ธฐ๋ณธ ๋งค๊ฐ๋ณ์ (Default Parameters)
- ํจ์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์ด์. ์ด๋ ํจ์ ํธ์ถ ์ ์ผ๋ถ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ตํ ์ ์๊ฒ ํด์ค์.
function greet(name, greeting = "Hello") {
return `${greeting}, ${name}!`;
}
console.log(greet("John")); // Hello, John!
console.log(greet("John", "Good morning")); // Good morning, John!
5. ํด๋์ค (Classes)
class
ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋ ์ฝ๊ฒ ๊ตฌํํ ์ ์์ด์. ์ด๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ์์๋ณด๋ค ์ง๊ด์ ์ด์์.
class Person {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}!`;
}
}
const person1 = new Person("Alice");
console.log(person1.greet()); // Hello, Alice!
6. ๋ชจ๋ (Modules)
import
์export
๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ชจ๋๋ก ๋ถ๋ฆฌํ๊ณ ์ฌ์ฌ์ฉํ ์ ์์ด์. ์ด๋ ์ฝ๋์ ๊ด๋ฆฌ์ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํด์.
// math.js
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}
// calc.js
import { add, subtract } from './math.js';
console.log(add(4, 3)); // 7
console.log(subtract(4, 3)); // 1
๐ค ES6๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
ES6๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์ ํ์ค์ด ๋์์ด์. ์๋ก์ด ๋ฌธ๋ฒ๊ณผ ๊ธฐ๋ฅ๋ค์ ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ค์. ๋ํ, ํ๋์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ES6 ๋ฌธ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ด์. ๋ฐ๋ผ์ ES6๋ฅผ ๋ฐฐ์ฐ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋ ์น ๊ฐ๋ฐ์ ์์ด ๋งค์ฐ ์ค์ํด์.
1. ์ฝ๋์ ๊ฐ๊ฒฐ์ฑ๊ณผ ๊ฐ๋ ์ฑ ํฅ์
- ํ์ดํ ํจ์:
function
ํค์๋ ๋์ ํ์ดํ(=>
)๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ์ผ๋ก ํจ์๋ฅผ ์ ์ํ ์ ์์ด์. ์ด๋ ํนํ ์ฝ๋ฐฑ ํจ์์ ๊ฐ์ ์งง์ ํจ์์์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํฌ๊ฒ ํฅ์์์ผ์. - ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด: ๋ฌธ์์ด ๋ด์์ ๋ณ์๋ฅผ ์ฝ๊ฒ ์ฝ์ ํ ์ ์์ด, ๋ณต์กํ ๋ฌธ์์ด ์กฐํฉ์ ๊ฐ๋จํ๊ฒ ๋ง๋ค ์ ์์ด์.
2. ๋ ๋์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
let
๊ณผconst
:var
๋์let
๊ณผconst
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์์ ์ค์ฝํ๋ฅผ ๋ ๋ช ํํ๊ฒ ๊ด๋ฆฌํ ์ ์์ด์. ์ด๋ ๋ณ์์ ์ฉ๋์ ๋ฐ๋ผ ๋ ์์ ํ๊ณ ๋ช ํํ ์ฝ๋ ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํด์.
3. ํ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํจํด ์ง์
- ๋ชจ๋ ์์คํ
:
import
์export
๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์์คํ ์ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ๋จ์๋ก ๋๋์ด ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ค์. ์ด๋ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋งค์ฐ ์ ์ฉํด์.
๐จ ์ฃผ์ํ ์
ES6 ๋ฌธ๋ฒ์ ํ์ตํ๊ฑฐ๋ ์ฌ์ฉํ ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ค์ ์ฃผ์ํด์ผ ํด์:
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ES6์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํ๋ ๊ฒ์ ์๋์์. ํนํ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ์ผ๋ถ ๊ธฐ๋ฅ์ด ์๋ํ์ง ์์ ์ ์์ด์. ์ด๋ฅผ ์ํด Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ES6 ์ฝ๋๋ฅผ ES5๋ก ๋ณํํ ํ์๊ฐ ์์ ์ ์์ต๋๋ค.
let
๊ณผconst
์ ์ค์ฝํ ์ดํด:let
๊ณผconst
๋ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก, ์ด๋ค์ ์ค์ฝํ๋ฅผ ์ ํํ ์ดํดํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํด์.- ํ์ดํ ํจ์์
this
: ํ์ดํ ํจ์๋ ์ผ๋ฐ ํจ์์ ๋ฌ๋ฆฌ ์์ ๋ง์this
๋ฅผ ๊ฐ์ง์ง ์์์. ์ด๋ ๋๋๋ก ์์์น ๋ชปํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ผ๋ฏ๋ก, ํ์ดํ ํจ์์this
๋ฐ์ธ๋ฉ ๋ฐฉ์์ ์ ์ดํดํ๊ณ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๐ ๊ฒฐ๋ก
ES6๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด์ ๋ง์ ํ์ ์ ์ธ ๋ณํ๋ฅผ ๊ฐ์ ธ์์ด์. ์ด๋ฌํ ๋ณํ๋ ๊ฐ๋ฐ์๋ค์ด ๋ ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๊ฒ ๋์์ค์. ES6์ ๊ธฐ๋ฅ๋ค์ ์์งํ๊ณ ํ์ฉํ๋ฉด, ์ฌ๋ฌ๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ๊ฐ ๋์ฑ ํฅ์๋ ๊ฑฐ์์.
๐ ์ถ๊ฐ ์ ๋ณด
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ํ ๋ ๊น์ ์ดํด๋ฅผ ์ํ์ ๋ค๋ฉด, MDN Web Docs์์ ์์ธํ ์ ๋ณด๋ฅผ ์ฐพ์๋ณผ ์ ์์ด์.
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํด๋ก์ (0) | 2024.03.23 |
---|---|
[JavaScript] this (1) | 2024.03.18 |
[JavaScript] async/await (0) | 2023.12.15 |
[JavaScript] ์ฝ๋ฐฑ ํจ์(Callback Function) (0) | 2023.12.14 |
[JavaScript] ์ฐ์ฐ์ (0) | 2023.12.14 |
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!