ECMAScript
ECMAScript๋ ์คํฌ๋ฆฝํธ ์ธ์ด์ธ JavaScript์ ํ์ค ๊ท๊ฒฉ์ ์ ์ํ๋ ๊ท๊ฒฉ์
๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฒ์ ์ ๋ํ๋ด๋ ์ด๋ฆ์ด๋ผ๊ณ ์๊ฐํด๋ ์ข์ต๋๋ค. ์ค์ ๋ก, ECMAScript๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ์ ์ธ ๋์, ๋ฐ์ดํฐ ํ์
, ๊ฐ์ฒด, ๋ฌธ๋ฒ ๋ฑ์ ์ ์ํฉ๋๋ค.
์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ์ JavaScript ์์ง์ ECMAScript ํ์ค์ ๋ฐ๋ฅด๋ฉฐ, ์๋ก์ด ECMAScript ๋ฒ์ ์ด ๋์ฌ ๋๋ง๋ค ์ด๋ฅผ ๊ตฌํํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋ฐํ์ ํ๊ฒฝ์์ ๊ฐ๋ฐ์๊ฐ ์ต์ ์ ์ธ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
ECMAScript ํตํด JavaSscript ์ธ์ด์ ํ์ค์ ์ ์ํ๊ณ , ๋ธ๋ผ์ฐ์ (chrome, edge, firefox ๋ฑ) ๋ฐ JavaScript ์์ง์ด ์ด์ ๋ง์ถฐ ๊ฐ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ฐํ์ ํ๊ฒฝ์์ ECMAScript ๋ผ๋ ํ์ค์ผ๋ก ๋์ํ ์ ์๋๋ก ๊ธฐ์ค์ ์ ์ํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ๊ฐ๋ฐ์๋ค์ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ฐํ์ ํ๊ฒฝ์ ํตํด, ECMAScript ํ์ค์ ๋ฐ๋ฅธ JavaScript ์ธ์ด์ ์ต์ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โข
๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ JavaScript๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ๋ฐํ์์ด ์ ๊ณต๋ฉ๋๋ค. ์ด ๋ฐํ์ ํ๊ฒฝ์ DOM(Document Object Model)์ ์ ๊ทผํ๊ณ , ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ์ ๋์ํ๋ฉฐ, ์น ํ์ด์ง์ ์์๋ค๊ณผ ์ํธ ์์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
โข
๋ํ, Node.js๋ ์๋ฒ ์ธก์์ JavaScript๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐํ์ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
ECMAScript ๋ฒ์
๋ฒ์ | ๋ฐํ ์ฐ๋ | ์ฃผ์ ๋ณ๊ฒฝ ๋ฐ ๋์
๋ ๊ธฐ๋ฅ |
ES1 (ECMAScript 1) | 1997 | ์ด๊ธฐ ECMAScript ํ์ค ์ ์ |
ES2 (ECMAScript 2) | 1998 | ES1 ์์ ๋ฐ ๋ช ๊ฐ์ง ์ถ๊ฐ ๊ธฐ๋ฅ ๋์
|
ES3 (ECMAScript 3) | 1999 | ์์ ์ ์ธ ๊ธฐ๋ฅ ๋์
, ์ ๊ทํํ์, try/catch ๋ฑ ์ถ๊ฐ |
ES4 (ECMAScript 4) | - | ๊ฐ๋ฐ ์ค๋จ, ์ค์ ๋ก๋ ์ฑํ๋์ง ์์ |
ES5 (ECMAScript 5) | 2009 | ์๊ฒฉ ๋ชจ๋, JSON ๊ฐ์ฒด, ์๋ก์ด ๋ฐฐ์ด ๋ฉ์๋ ๋ฑ ๋์
|
ES5.1 (ECMAScript 5.1) | - | ES5์ ๋ช ๊ฐ์ง ์ค๋ฅ ์์ ๋ฐ ๋ณด์ ํ |
ES6 (ECMAScript 2015) | 2015 | ํ์ดํ ํจ์, ํด๋์ค, ๋ชจ๋ ๋ฑ ๋์
|
ES7 (ECMAScript 2016) | - | ์ฃผ์ ๋ณ๊ฒฝ ์์ด ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ, async/await ๋ฑ |
ES8 (ECMAScript 2017) | - | async/await, Object.values(), Object.entries() ๋ฑ ๋์
|
ES9 (ECMAScript 2018) | - | ๋ ์คํธ/์คํ๋ ๋ ํ๋กํผํฐ, ๋น๋๊ธฐ ๋ฐ๋ณต์, ์ ๊ทํํ์์ ํํ ์ฐ๊ฒฐ์ ๋ฑ ๋์
|
ES10 (ECMAScript 2019) | - | Array.prototype.flat(), Array.prototype.flatMap(), Object.fromEntries() ๋ฑ ๋์
|
ES11 (ECMAScript 2020) | - | BigInt, ๋์ import(), globalThis, Promise.allSettled() ๋ฑ ๋์
|
ES12 (ECMAScript 2021) | - | String.prototype.replaceAll(), ๋
ผ๋ฆฌ์ ํ ๋น ์ฐ์ฐ์ |
ES6 (ECMAScript 2015)
2015๋
์ ํ์ค์ผ๋ก ์ฑํ๋ ECMAScript ๋ฒ์ ์ JavaScript ์ธ์ด์ ๋ง์ ํ์ ๊ณผ ๋ณํ๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ES6๋ ์ด์ ๋ฒ์ ์ ๋นํด ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋์
ํ์ฌ JavaScript ์ฝ๋๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์์ต๋๋ค.
ES6 ์ฃผ์ ๋ฌธ๋ฒ
์ฃผ์ ๊ธฐ์ | ์ค๋ช
|
const์ let | ๋ธ๋ก ์ค์ฝํ ๋ณ์๋ฅผ ๋์
ํ๋ฉฐ, const๋ ์ฌํ ๋น ๋ถ๊ฐ, let์ ์ฌํ ๋น ๊ฐ๋ฅ |
ํ
ํ๋ฆฟ ๋ฌธ์์ด | ๋ฐฑํฑ(`)์ ์ฌ์ฉํ์ฌ ๋ฉํฐ๋ผ์ธ ๋ฌธ์์ด ๋ฐ ๋ณ์ ์ฝ์
์ด ๊ฐ๋ฅํ ๋ฌธ์์ด |
ํ์ดํ ํจ์ | ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๋ ํ์ดํ ํจ์ |
๋๋จธ์ง ๋งค๊ฐ๋ณ์ | ํจ์ ์ ์์์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ์ธ์ ์ฒ๋ฆฌ |
์ ๊ฐ ์ฐ์ฐ์ | ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ํ์ด์ ์ ๊ฐํ ์ ์๋ ์ฐ์ฐ์ |
forEach(), map(), reduce() | ๋ฐฐ์ด์ ์ํํ๊ณ ๋ณํ ๋๋ ์ถ์ํ๋ ๋ฉ์๋ |
๊ฐ์ฒด ๋ฆฌํฐ๋ด (ํฅ์๋ ๊ฐ์ฒด ๋ฌธ๋ฒ) | ์์ฑ์ ์ถ์ฝ ๋ฌธ๋ฒ, ๊ณ์ฐ๋ ์์ฑ ์ด๋ฆ, ๋ฉ์๋ ์ถ์ฝ ๋ฑ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ๊ฐ์ |
๊ตฌ์กฐ ๋ถํด ํ ๋น | ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์์ ์ํ๋ ๊ฐ์ ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น |
ํด๋์ค | ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ํด๋์ค |
ํ๋ก๋ฏธ์ค | ๋น๋๊ธฐ ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ Promise ๊ฐ์ฒด |
async/await | ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ async ํจ์์ await ํค์๋ |
Map/Set | Map๊ณผ Set ์ปฌ๋ ์
์ ๋์
ํ์ฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ๊ณต |
NULL ๋ณํฉ | null ๋๋ undefined๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ?? ์ฐ์ฐ์ |
์ต์
๋ ์ฒด์ด๋ | ?. ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ฒฉ๋ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ ๋ undefined ๋๋ null์ธ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฐฉ์ง |
๋ชจ๋ import, export | ์ฝ๋๋ฅผ ๋ชจ๋๋ก ๊ตฌ์ฑํ๊ณ ๋ค๋ฅธ ํ์ผ์์ ํ์ํ ๋ถ๋ถ์ ๊ฐ์ ธ์ ์ฌ์ฉ ๊ฐ๋ฅ |
const, let:
โข
const์ let์ ๋ธ๋ก ์ค์ฝํ ๋ณ์๋ฅผ ๋์
ํ์ต๋๋ค. const๋ ์ฌํ ๋น์ด ๋ถ๊ฐ๋ฅํ ๋ณ์๋ฅผ ์ ์ธํ๊ณ , let์ ์ฌํ ๋น์ด ๊ฐ๋ฅํ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
์ ์ธ ํค์๋ | ์ค๋ช
|
var | ์ด๊ธฐ~ES5 ๊น์ง ์ฌ์ฉํ๋ ๋ณ์ ์ ์ธ ํค์๋ |
let | ES6 ๋ถํฐ ๋์
๋ ๋ณ์ ์ ์ธ ํค์๋ |
const | ES6 ๋ถํฐ ๋์
๋ ์์ ์ ์ธ ํค์๋ |
var ์ let ์ ์ฐจ์ด
ํน์ฑ | var | let |
์ค์ฝํ | ํจ์ ์ค์ฝํ | ๋ธ๋ก ์ค์ฝํ |
ํธ์ด์คํ
| ๋ฐ์ํจ | ๋ฐ์ํจ |
์ฌํ ๋น ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๊ฐ๋ฅ |
์ฌ์ ์ธ ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ |
์ด๊ธฐํ ํ์ | ํ์ํ์ง ์์ | ํ์ |
1.
์ค์ฝํ:
โข
var๋ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฉฐ, ํจ์ ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ํจ์ ๋ด์์๋ง ์ ํจํฉ๋๋ค.
โข
let์ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ค๊ดํธ({}) ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ๊ทธ ๋ธ๋ก ๋ด์์๋ง ์ ํจํฉ๋๋ค.
2.
ํธ์ด์คํ
:
โข
var์ let์ ๋ชจ๋ ํธ์ด์คํ
์ด ๋ฐ์ํฉ๋๋ค. ๋ณ์๊ฐ ์ ์ธ๋๊ธฐ ์ ์ ์ฐธ์กฐํ๋ฉด undefined๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
3.
์ฌํ ๋น ๊ฐ๋ฅ:
โข
var์ let์ ๋ชจ๋ ๋ณ์์ ๊ฐ์ ์ฌํ ๋นํ ์ ์์ต๋๋ค.
4.
์ฌ์ ์ธ ๊ฐ๋ฅ:
โข
var๋ ๊ฐ์ ์ค์ฝํ ๋ด์์ ๋ณ์๋ฅผ ์ฌ์ ์ธํ ์ ์์ต๋๋ค.
โข
let์ ๊ฐ์ ์ค์ฝํ ๋ด์์ ๋ณ์๋ฅผ ์ฌ์ ์ธํ ์ ์์ต๋๋ค.
5.
์ด๊ธฐํ ํ์:
โข
var๋ ๋ณ์ ์ ์ธ ์ ์ด๊ธฐํ๊ฐ ํ์๊ฐ ์๋๋๋ค. ์ด๊ธฐํ๋์ง ์์ผ๋ฉด undefined๋ก ์ค์ ๋ฉ๋๋ค.
โข
let์ ๋ณ์ ์ ์ธ ์ ์ด๊ธฐํ๊ฐ ํ์ํฉ๋๋ค. ์ด๊ธฐํ ์์ด ๋ณ์๋ฅผ ์ ์ธํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํธ์ด์คํ (Hoisting)
: โ๋์ด์ฌ๋ฆฌ๊ธฐโ (์์ด ๋ป)
โข
JavaScript์์ ๋ณ์ ๋ฐ ํจ์ ์ ์ธ์ด ์ค์ฝํ ๋ด์ ์ต์๋จ์ผ๋ก ๋์ด์ฌ๋ ค์ง๋ ํ์์ ๊ฐ๋ฆฌํค๋ ์ฉ์ด์
๋๋ค.
โข
var ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด, ํธ์ด์คํ
(๋์ด์ฌ๋ฆฌ๊ธฐ)๊ฐ ๋ฐ์ํ์ฌ ํจ์ ๋ด ์ด๋์์๋ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
var ์ let ์ ํธ์ด์คํ ์ผ๋ก ์ธํ ์ฐจ์ด
function example() {
console.log(a); // ์ถ๋ ฅ: undefined (ํธ์ด์คํ
)
var a = 10;
console.log(a); // ์ถ๋ ฅ: 10
}
function exampleLet() {
// console.log(b); // ์๋ฌ: ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์์
let b = 20;
console.log(b); // ์ถ๋ ฅ: 20
}
example();
exampleLet();
JavaScript
๋ณต์ฌ
var ์ let ์ scope ์ฐจ์ด
โข
var : ํจ์ ์ค์ฝํ
โข
let : ๋ธ๋ก ์ค์ฝํ
โข
var์ ํจ์ ์ค์ฝํ:
function exampleVar() {
if (true) {
var x = 10;
}
console.log(x); // ์ถ๋ ฅ: 10
}
exampleVar();
JavaScript
๋ณต์ฌ
โข
let์ ๋ธ๋ก ์ค์ฝํ
function exampleLet() {
if (true) {
let y = 20;
}
// console.log(y); // ์๋ฌ: ๋ธ๋ก ์ค์ฝํ ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ ์์
}
exampleLet();
JavaScript
๋ณต์ฌ
ํ ํ๋ฆฟ ๋ฌธ์์ด
โข
๋ฐฑํฑ(`)์ ์ฌ์ฉํ์ฌ ๋ฉํฐ๋ผ์ธ ๋ฌธ์์ด ๋ฐ ๋ณ์ ์ฝ์
์ด ๊ฐ๋ฅํ ํ
ํ๋ฆฟ ๋ฌธ์์ด์ ๋์
ํ์ต๋๋ค.
ํ ํ๋ฆฟ ๋ฌธ์์ด(Template Strings)
: ๋ฌธ์์ด์ ๋ณด๋ค ๊ฐํธํ๊ฒ ์์ฑํ ์ ์๋๋ก ํด์ฃผ๋ JavaScript์ ๋ฌธ๋ฒ ์ค ํ๋์
๋๋ค. ์ด๋ ๋ฐฑํฑ(backtick) (`)์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ๊ฐ์ธ๊ณ , ๋ณ์ ๋๋ ํํ์์ ${} ์์ ๋ฃ์ด ์ฌ์ฉํ๋ ๋ฐฉ์์
๋๋ค.
โข
ํ
ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ ์์
const name = 'aloha';
const age = 20;
// ํ
ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ
const greeting = `Hello, ${name}! You are ${age} years old.`;
console.log(greeting);
JavaScript
๋ณต์ฌ
ํ์ดํ ํจ์
โข
ํจ์๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๋ ํ์ดํ ํจ์๋ฅผ ๋์
ํ์ต๋๋ค.
ํ์ดํ ํจ์(Arrow Function)
: function ํค์๋ ๋์ =>๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ ์ต๋ช
ํจ์
โข
์ต๋ช
ํจ์ ์์ ์ฝ๋
// ์ต๋ช
ํจ์
const sum = function (a, b) {
return a + b;
};
console.log(sum(2, 3)); // ์ถ๋ ฅ: 5
JavaScript
๋ณต์ฌ
โข
ํ์ดํ ํจ์๋ก ๋ณํํ ์์ ์ฝ๋
// ํ์ดํ ํจ์
const sumArrow = (a, b) => {
return a + b;
};
console.log(sumArrow(2, 3)); // ์ถ๋ ฅ: 5
JavaScript
๋ณต์ฌ
์ต๋ช ํจ์์ ํ์ดํํจ์์ ๋น๊ต
ํน์ฑ | ์ต๋ช
ํจ์ | ํ์ดํ ํจ์ |
๊ตฌ๋ฌธ | function (param1, param2, ...) { } | (param1, param2, ...) => { } |
this ๋์ | ์๋ก์ด this ์์ฑ | ์ฃผ๋ณ ์ค์ฝํ์์ this ๊ฐ์ ธ๋ค ์ฌ์ฉ |
arguments ์ฌ์ฉ | ์ฌ์ฉ ๊ฐ๋ฅ | ์ฌ์ฉ ๋ถ๊ฐ
(๋์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์) |
์์ฑ์๋ก ์ฌ์ฉ ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๋ถ๊ฐ๋ฅ |
ํธ์ด์คํ
| ํธ์ด์คํ
์ด ๋ฐ์ํจ | ํธ์ด์คํ
์ด ๋ฐ์ํจ |
return ํค์๋ ์๋ต | ๊ฐ๋ฅ | ๊ฐ๋ฅ (๋จ์ผ ํํ์์ ๊ฒฝ์ฐ) |
arguments
: arguments๋ ํจ์ ๋ด์์ ์ธ์๋ค์ ๋ํ๋ด๋ ๊ฐ์ฒด์
๋๋ค.
โข
์ผ๋ฐ ํจ์ (์ต๋ช
ํจ์)์์ arguments ์ฌ์ฉ
function regularFunction() {
console.log(arguments);
}
regularFunction(1, 'hello', true);
JavaScript
๋ณต์ฌ
Arguments(3) [1, "hello", true, callee: (...), Symbol(Symbol.iterator): ฦ]
JavaScript
๋ณต์ฌ
โข
ํ์ดํ ํจ์์์ arguments ์ฌ์ฉ ๋ถ๊ฐ
const arrowFunction = () => {
// console.log(arguments); // ์๋ฌ: arguments๋ ํ์ดํ ํจ์์์ ์ฌ์ฉ ๋ถ๊ฐ
};
arrowFunction(1, 'hello', true);
JavaScript
๋ณต์ฌ
๋๋จธ์ง ๋งค๊ฐ๋ณ์
โข
ํจ์ ์ ์์์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ์ธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋๋จธ์ง ๋งค๊ฐ๋ณ์
: ์ ๋ฌ์ธ์์ ๊ฐ์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ๋ฌ๋ฐ์ ์ ์๋ ๋งค๊ฐ๋ณ์
์ ๊ฐ ์ฐ์ฐ์
โข
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ํ์ด์ ์ ๊ฐํ ์ ์๋ ์ ๊ฐ ์ฐ์ฐ์๋ฅผ ๋์
ํ์ต๋๋ค.
์ ๊ฐ ์ฐ์ฐ์
: ๋ฐฐ์ด์ ์ ๊ฐํด์ ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํด์ฃผ๋ ์ฐ์ฐ์
forEach(), map(), reduce()
โข
๋ฐฐ์ด์ ์ํํ๊ณ ๋ณํ ๋๋ ์ถ์ํ๋ ๋ฉ์๋์ธ forEach(), map(), reduce() ๋ฑ์ด ๋์
๋์์ต๋๋ค.
forEach()
forEach() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ํจ์๋ฅผ ์คํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ณต๋ฌธ ๋์ ์ฌ์ฉ๋๋ฉฐ, ์์์ ๋ํ ๋ฐ๋ณต ์์
์ ์ํํ ๋ ์ ์ฉํฉ๋๋ค.
โข
๋ฌธ๋ฒ
const array = [1, 2, 3, 4, 5]
array.forEach(callback(currentValue, index, array) {
// ์์
์ํ
}, thisArg);
JavaScript
๋ณต์ฌ
1.
currentValue: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ๊ฐ.
2.
index: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค.
3.
array: forEach()๊ฐ ํธ์ถ๋ ๋ฐฐ์ด ์์ฒด.
โข
์์ ์ฝ๋
const numbers = [1, 2, 3, 4, 5];
numbers.forEach((number, index) => {
console.log(`Element at index ${index}: ${number}`);
});
JavaScript
๋ณต์ฌ
map()
map() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
โข
๋ฌธ๋ฒ
const array = [1, 2, 3, 4, 5]
const newArray = array.map(callback(currentValue, index, array) {
// ๋ณํ ์์
์ํ
}, thisArg);
JavaScript
๋ณต์ฌ
1.
currentValue: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ๊ฐ.
2.
index: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค.
3.
array: forEach()๊ฐ ํธ์ถ๋ ๋ฐฐ์ด ์์ฒด.
โข
์์ ์ฝ๋
const numbers = [1, 2, 3, 4, 5];
const squared = numbers.map((number) => {
return number * number;
});
console.log(squared); // ์ถ๋ ฅ: [1, 4, 9, 16, 25]
JavaScript
๋ณต์ฌ
reduce()
reduce() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๊ณ , ํ๋์ ๋์ ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ๋์ ๊ฐ์ผ๋ก ์ถ์ํ ๋ ์ ์ฉํฉ๋๋ค.
โข
๋ฌธ๋ฒ
const array = [1, 2, 3, 4, 5]
const result = array.reduce(callback(accumulator, currentValue, index, array) {
// ์ถ์ ์์
์ํ
}, initialValue);
JavaScript
๋ณต์ฌ
1.
accumulator: ๋์ ๋ ๊ฐ์ผ๋ก, ๊ฐ ์์๋ฅผ ์ฒ๋ฆฌํ๋ฉด์ ๋์ ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ณ์.
2.
currentValue: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ๊ฐ.
3.
index: ํ์ฌ ๋ฐ๋ณต ์ค์ธ ๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค.
4.
array: reduce()๊ฐ ํธ์ถ๋ ๋ฐฐ์ด ์์ฒด.
5.
initialValue: ๋์ ๋ณ์์ ์ด๊ธฐ๊ฐ.
โข
์์ ์ฝ๋
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, number) => {
return accumulator + number;
}, 0);
console.log(sum); // ์ถ๋ ฅ: 15
JavaScript
๋ณต์ฌ
๊ฐ์ฒด ๋ฆฌํฐ๋ด (ํฅ์๋ ๊ฐ์ฒด ๋ฌธ๋ฒ)
โข
๊ฐ์ฒด ๋ฆฌํฐ๋ด์์ ์์ฑ์ ์ถ์ฝ ๋ฌธ๋ฒ, ๊ณ์ฐ๋ ์์ฑ ์ด๋ฆ, ๋ฉ์๋ ์ถ์ฝ ๋ฑ์ ๋์
ํ์ต๋๋ค.
โข
์์ฑ ์ถ์ฝ
โข
๊ณ์ฐ๋ ์์ฑ๋ช
โข
๋ฉ์๋์ถ์ฝ
์์ฑ ์ถ์ฝ
๊ธฐ์กด์๋ ๋ณ์์ ๋์ผํ ์ด๋ฆ์ ์์ฑ์ ๋ง๋ค ๋, ์ด๋ฆ์ ๋ฐ๋ณตํด์ ์์ฑํด์ผ ํ์ง๋ง, ํฅ์๋ ๊ฐ์ฒด ๋ฌธ๋ฒ์์๋ ๋ณ์ ์ด๋ฆ๋ง ์์ฑํ๋ฉด ๋ฉ๋๋ค.
โข
์์ ์ฝ๋
const name = 'aloha';
const age = 20;
// ๊ธฐ์กด ๋ฐฉ์
const person1 = {
name: name,
age: age
};
// ํฅ์๋ ๊ฐ์ฒด ๋ฌธ๋ฒ
const person2 = {
name,
age
};
console.log(person1); // { name: 'aloha', age: 20 }
console.log(person2); // { name: 'aloha', age: 20 }
JavaScript
๋ณต์ฌ
๊ณ์ฐ๋ ์์ฑ๋ช
์์ฑ ์ด๋ฆ์ ๋์ ์ผ๋ก ๊ณ์ฐํ์ฌ ์ ์ํ ์ ์์ต๋๋ค.
โข
์์ ์ฝ๋
const key = 'gender';
const person = {
name: 'aloha',
age: 25,
[key]: 'female'
};
console.log(person); // { name: 'aloha', age: 25, gender: 'female' }
JavaScript
๋ณต์ฌ
๋ฉ์๋ ์ถ์ฝ
๋ฉ์๋๋ฅผ ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
โข
์์ ์ฝ๋
// ๊ธฐ์กด ๋ฐฉ์
const obj1 = {
method1: function() {
// ๋ฉ์๋ ๋ก์ง
}
};
// ํฅ์๋ ๊ฐ์ฒด ๋ฌธ๋ฒ
const obj2 = {
method1() {
// ๋ฉ์๋ ๋ก์ง
}
};
JavaScript
๋ณต์ฌ
๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์์ ์ํ๋ ๊ฐ์ ์ถ์ถํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๋์
ํ์ต๋๋ค.
๊ตฌ์กฐ ๋ถํด ํ ๋น
: ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๋ณ์์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ๊ณ , ํ์ํ ๊ฐ์ ์ฝ๊ฒ ์ถ์ถํ ์ ์์ต๋๋ค.
โข
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๋งค๊ฐ๋ณ์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
๋ฐฐ์ด ๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๋ฌธ๋ฒ
const [variable1, variable2, ...rest] = array;
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
const numbers = [1, 2, 3, 4, 5];
// ๋ฐฐ์ด์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
const [first, second, ...rest] = numbers;
console.log(first); // ์ถ๋ ฅ: 1
console.log(second); // ์ถ๋ ฅ: 2
console.log(rest); // ์ถ๋ ฅ: [3, 4, 5]
JavaScript
๋ณต์ฌ
๊ฐ์ฒด ๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๋ฌธ๋ฒ
const { property1, property2, ...rest } = object;
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
const person = {
name: 'aloha',
age: 25,
gender: 'female'
};
// ๊ฐ์ฒด์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
const { name, age, ...rest } = person;
console.log(name); // ์ถ๋ ฅ: 'aloha'
console.log(age); // ์ถ๋ ฅ: 25
console.log(rest); // ์ถ๋ ฅ: { gender: 'female' }
JavaScript
๋ณต์ฌ
๋งค๊ฐ๋ณ์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
โข
๋ฌธ๋ฒ
// ๋งค๊ฐ๋ณ์์์์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
function functionName({ param1, param2, param3}) {
console.log(`param1: ${param1}, param2: ${param2}, param3: ${param3}`);
}
const params = {
param1: 1,
param2: 2,
param3: 3
};
functionName(params);
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
// ๋งค๊ฐ๋ณ์์์์ ๊ตฌ์กฐ ๋ถํด ํ ๋น
function printPersonInfo({ name, age, gender }) {
console.log(`Name: ${name}, Age: ${age}, Gender: ${gender}`);
}
const person = {
name: 'aloha',
age: 20,
gender: 'male'
};
printPersonInfo(person); // ์ถ๋ ฅ: Name: aloha, Age: 20, Gender: male
JavaScript
๋ณต์ฌ
ํด๋์ค
โข
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ํด๋์ค๋ฅผ ๋์
ํ์ต๋๋ค.
ํด๋์ค๋?
: ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ณ ์์ฑํ๊ธฐ ์ํ ๋ฌธ๋ฒ
๊ฐ์ฒด๋?
: ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ์์ฑ๊ณผ ๋ฉ์๋๋ก ์ ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ฌธ๋ฒ
ํด๋์ค
ํด๋์ค๋ class ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋ฉ๋๋ค.
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๊ธฐ ์ํ ์๋ก์ด ๋ฌธ๋ฒ์
๋๋ค. ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
โข
๋ฌธ๋ฒ
class ClassName {
constructor() {
// ์์ฑ์
}
// ๋ฉ์๋ ์ ์
methodName() {
// ๋ฉ์๋ ๋ก์ง
}
}
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
class Animal {
constructor(name, sound) {
this.name = name;
this.sound = sound;
}
makeSound() {
console.log(`${this.name} says ${this.sound}`);
}
}
// ์์์ ์ด์ฉํ ์๋ธํด๋์ค ์ ์
class Dog extends Animal {
constructor(name) {
// ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์ ํธ์ถ
super(name, 'Woof');
}
}
// ํด๋์ค๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ์์ฑ
const cat = new Animal('Cat', 'Meow');
const dog = new Dog('Dog');
// ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
cat.makeSound(); // ์ถ๋ ฅ: Cat says Meow
dog.makeSound(); // ์ถ๋ ฅ: Dog says Woof
JavaScript
๋ณต์ฌ
ํ๋ก๋ฏธ์ค (Promise)
โข
๋น๋๊ธฐ ์์
์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ Promise ๊ฐ์ฒด๋ฅผ ๋์
ํ์ต๋๋ค.
ํ๋ก๋ฏธ์ค
: ํ๋ก๋ฏธ์ค๋ ๋น๋๊ธฐ ์์
์ ์ฑ๊ณต ๋๋ ์คํจ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด
โข
๋ฌธ๋ฒ
// ํ๋ก๋ฏธ์ค ์์ฑ
const myPromise = new Promise((resolve, reject) => {
// ๋น๋๊ธฐ ์์
์ํ
const success = true;
if (success) {
resolve('Success result');
} else {
reject('Error message');
}
});
// ํ๋ก๋ฏธ์ค ์ฌ์ฉ
myPromise
.then((result) => {
console.log(result); // ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ๊ฒฝ์ฐ์ ์ฒ๋ฆฌ
})
.catch((error) => {
console.error(error); // ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์ฒ๋ฆฌ
});
JavaScript
๋ณต์ฌ
1.
ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ์์ฑ : new Promise( (resolve, reject) โ { } )
2.
ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ์์ฑ์ ์ธ์๋ก ์ ์ํ ์ฝ๋ฐฑํจ์ ์์์ resovle() ๋ฅผ ํธ์ถํ๋ฉด, ํ๋ก๋ฏธ์ค ์ฌ์ฉ ์ then() ํจ์๊ฐ ์คํ๋ฉ๋๋ค.
3.
๋ฐ๋๋ก ํ๋ก๋ฏธ์ค ๊ฐ์ฒด ์์ฑ ์ ์ ์ํ ์ฝ๋ฐฑํจ์ ์์์ reject() ๋ฅผ ํธ์ถํ๋ฉด, ํ๋ก๋ฏธ์ค ์ฌ์ฉ ์ catch() ํจ์๊ฐ ์คํ๋ฉ๋๋ค.
โข
์์ ์ฝ๋
// ํ๋ก๋ฏธ์ค๋ฅผ ์ฌ์ฉํ ํ์ด๋จธ ์์ ์ฝ๋
function delay(ms) {
return new Promise((resolve, reject) => {
// setTimeout ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์
๋ชจ๋ฐฉ
setTimeout(() => {
// ms ์๊ฐ์ด ์ง๋ ํ, resolve๋ฅผ ํธ์ถํ์ฌ ํ๋ก๋ฏธ์ค ์ดํ
resolve(`Waited for ${ms} milliseconds`);
}, ms);
});
}
// ํ๋ก๋ฏธ์ค๋ฅผ ์ด์ฉํ ํ์ด๋จธ ์ฌ์ฉ
delay(2000) // 2์ด ๋์ ๊ธฐ๋ค๋ฆผ
.then((result) => {
console.log(result); // ์ถ๋ ฅ: 'Waited for 2000 milliseconds'
// ์ดํ์ ์์
์ ์ด์ด์ ์ฒ๋ฆฌํ ์ ์์
})
.catch((error) => {
console.error(error); // ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ฒ๋ฆฌ
});
JavaScript
๋ณต์ฌ
async/await
โข
๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ async ํจ์์ await ํค์๋๋ฅผ ๋์
ํ์ต๋๋ค.
async/await
: ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฌธ๋ฒ
async ํจ์:
async ํจ์๋ ๋น๋๊ธฐ์ ์ธ ๋์์ ํฌํจํ๊ณ ์์์ ๋ํ๋ด๋ ํค์๋์
๋๋ค. ์ด ํจ์ ๋ด์์ await๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋ฏธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค.
async function sample() {
// ๋น๋๊ธฐ ์์
const result = await test();
console.log(result);
}
JavaScript
๋ณต์ฌ
await ํค์๋:
await ํค์๋๋ async ํจ์ ๋ด์์๋ง ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ, ํ๋ก๋ฏธ์ค๊ฐ ์ดํ๋ ๋๊น์ง ํจ์์ ์คํ์ ์ผ์ ์ค๋จํ๊ณ ํ๋ก๋ฏธ์ค์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํํฉ๋๋ค.
async function fetchData() {
const response = await fetch('https://httpbin.org/get');
const data = await response.json();
return data;
}
fetchData()
.then((result) => {
console.log(result);
})
.catch((error) => {
console.log(error);
})
JavaScript
๋ณต์ฌ
Map/Set
โข
Map๊ณผ Set ์ปฌ๋ ์
์ ๋์
ํ์ฌ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ์ต๋๋ค.
Map
ํค-๊ฐ ์์ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ
โข
ํค์ ๊ฐ์ ๋ชจ๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์
์ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
โข
Map ์์ฑ, ํค-๊ฐ ์ง์ , ๊ฐ ์ฌ์ฉ
const map = new Map()
map.set('key1', 'value1')
map.set('key2', 'value2')
map.set('key3', 'value3')
console.log(map);
console.log(map.get('key1'));
console.log(map.get('key2'));
console.log(map.get('key3'));
// ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง Map ์์ฑ
const map2 = new Map([
['key1', 'value1'],
['key2', 'value2']
]);
console.log(map2);
JavaScript
๋ณต์ฌ
โข
Map ๋ฐ๋ณต
map.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// Map์ ํค ์ํ
for (const key of map.keys()) {
console.log(key);
}
// Map์ ๊ฐ ์ํ
for (const value of map.values()) {
console.log(value);
}
// Map์ ํญ๋ชฉ(ํค-๊ฐ ์) ์ํ
for (const [key, value] of map.entries()) {
console.log(`${key}: ${value}`);
}
JavaScript
๋ณต์ฌ
Set
์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ์์๋ฅผ ์ ์งํ์ง ์๋ ์์๋ค์ ์ปฌ๋ ์
์ ๋ํ๋ด๋ ์๋ฃ ๊ตฌ์กฐ
โข
Set์ ์์ฑ๊ณผ ๊ธฐ๋ณธ ์ฌ์ฉ
// Set ์์ฑ
const set = new Set();
// ์์ ์ถ๊ฐ
set.add('value1');
set.add('value2');
// ์์ ์กฐํ
console.log(set.has('value1')); // ์ถ๋ ฅ: true
// ์์ ์ญ์
set.delete('value1');
// Set ํฌ๊ธฐ ํ์ธ
console.log(set.size); // ์ถ๋ ฅ: 1
// ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง Set ์์ฑ
const set2 = new Set(['value1', 'value2']);
console.log(set2);
JavaScript
๋ณต์ฌ
โข
Set์ ๋ฐ๋ณต
// Set ์ํ
set2.forEach((value) => {
console.log(value);
});
// Set์ ์์ ์ํ
for (const value of set2) {
console.log(value);
}
JavaScript
๋ณต์ฌ
NULL ๋ณํฉ
โข
null ๋๋ undefined๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ?? (nullish coalescing) ์ฐ์ฐ์๋ฅผ ๋์
ํ์ต๋๋ค.
NULL ๋ณํฉ
๋ณ์๊ฐ null ๋๋ undefined์ธ ๊ฒฝ์ฐ์ ๋์ฒด๊ฐ์ ์ ๊ณตํ๋ ์ฐ์ฐ์
โข
๋ฌธ๋ฒ
const result = ๋ณ์ ?? ๋์ฒด๊ฐ(๊ธฐ๋ณธ๊ฐ);
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
// ๋ณ์๊ฐ null ๋๋ undefined์ธ ๊ฒฝ์ฐ์ ๋์ฒด๊ฐ ์ฌ์ฉ
const userInput = null;
const username = userInput ?? 'Guest';
console.log(username); // ์ถ๋ ฅ: 'Guest'
JavaScript
๋ณต์ฌ
์ต์ ๋ ์ฒด์ด๋
โข
?. ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ฒฉ๋ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ ๋ undefined ๋๋ null์ธ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ์ต์
๋ ์ฒด์ด๋์ ๋์
ํ์ต๋๋ค.
์ต์ ๋ ์ฒด์ด๋
ํ๋กํผํฐ๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๊ณ , ์กด์ฌํ๋ฉด ํด๋น ํ๋กํผํฐ ๊ฐ์ ๋ฐํํ๋ ์ฐ์ฐ์
โข
๋ฌธ๋ฒ
const value = object?.property?.nestedProperty;
JavaScript
๋ณต์ฌ
โข
์์ ์ฝ๋
const user = {
id: 1,
username: 'john_doe',
profile: {
email: 'john@example.com',
address: {
city: 'New York'
}
}
};
// ์ค์ฒฉ๋ ํ๋กํผํฐ์ ์์ ํ๊ฒ ์ ๊ทผ
const city = user?.profile?.address?.city;
console.log(city); // ์ถ๋ ฅ: 'New York'
const nonExistentProperty = user?.nonExistentProperty;
console.log(nonExistentProperty); // ์ถ๋ ฅ: undefined
JavaScript
๋ณต์ฌ
๋ชจ๋ import, export:
โข
๋ชจ๋ ์์คํ
์ ํตํด ์ฝ๋๋ฅผ ๋ชจ๋๋ก ๊ตฌ์ฑํ๊ณ , ํ์ํ ๋ถ๋ถ์ ๋ค๋ฅธ ํ์ผ์์ ๊ฐ์ ธ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์
ํ์ต๋๋ค.
export
: ECMAScript ๋ชจ๋ ์์คํ
์์ ์ฌ์ฉ๋๋ฉฐ, ๋ชจ๋์์ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ด๋ณด๋ด๋๋ฐ ์ฌ์ฉ๋๋ ํค์๋
import
: ๋ค๋ฅธ ๋ชจ๋์์ ๋ด๋ณด๋ธ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ๊ฐ์ ธ์ ์ฌ์ฉํ ๋ ์ฌ์ฉํ๋ ํค์๋
export
โข
๊ฐ๋ณ ๋ณ์ ๋๋ ํจ์ ๋ด๋ณด๋ด๊ธฐ
โข
๋ณ์นญ์ ์ฌ์ฉํ ๊ฐ๋ณ ๋ด๋ณด๋ด๊ธฐ
โข
๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ
โข
๊ฐ๋ณ ๋ณ์ ๋๋ ํจ์ ๋ด๋ณด๋ด๊ธฐ
// 14_module.mjs
// ๊ฐ๋ณ ๋ณ์ ๋ด๋ณด๋ด๊ธฐ
export const myVariable = 42;
// ๊ฐ๋ณ ํจ์ ๋ด๋ณด๋ด๊ธฐ
export function myFunction() {
return 'Hello, world!';
}
JavaScript
๋ณต์ฌ
โข
๋ณ์นญ์ ์ฌ์ฉํ ๊ฐ๋ณ ๋ด๋ณด๋ด๊ธฐ
// 14_module.mjs
// ๊ฐ๋ณ ๋ณ์, ํจ์์ ๋ณ์นญ(alias) ์ฌ์ฉํ์ฌ ๋ด๋ณด๋ด๊ธฐ
const internalVariable = 42;
function internalFunction() {
return 'Hello, world!';
}
export { internalVariable as myVariable, internalFunction as myFunction };
JavaScript
๋ณต์ฌ
โข
๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ
// 14_module.mjs
// ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ
const myVariable = 42;
export default myVariable;
JavaScript
๋ณต์ฌ
import
โข
๊ฐ๋ณ ๋ณ์ ๋๋ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
โข
๋ชจ๋ ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ
โข
๊ธฐ๋ณธ ๊ฐ์ ธ์ค๊ธฐ
โข
๊ฐ๋ณ ๋ณ์ ๋๋ ํจ์ ๊ฐ์ ธ์ค๊ธฐ
// 14_module2.mjs
// ๋ค๋ฅธ ํ์ผ์์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
import { myVariable, myFunction } from './14_module.mjs';
console.log(myVariable); // ์ถ๋ ฅ: 42
const result = myFunction();
console.log(result); // ์ถ๋ ฅ: 'Hello, world!'
JavaScript
๋ณต์ฌ
โข
๋ชจ๋ ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ
// 14_module2.mjs
// ๋ค๋ฅธ ํ์ผ์์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ (๋ชจ๋ ๋ด์ฉ)
import * as myModule from './14_module.mjs';
console.log(myModule.myVariable); // ์ถ๋ ฅ: 42
console.log(myModule.myFunction()); // ์ถ๋ ฅ: 'Hello, world!'
JavaScript
๋ณต์ฌ
โข
๊ธฐ๋ณธ ๊ฐ์ ธ์ค๊ธฐ
// 14_module2.mjs
// ๋ค๋ฅธ ํ์ผ์์ ๊ธฐ๋ณธ ๋ด๋ณด๋ธ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
import myVariable from './14_module.mjs';
console.log(myVariable); // ์ถ๋ ฅ: 42
JavaScript
๋ณต์ฌ







