โ๏ธ ์ด๋ฒ ์ ๋ ์ ํตํด ์๊ฒ ๋ ๊ฒ
ํ์ดํ ํจ์
REST ํ๋ผ๋ฏธํฐ
๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ
โ๏ธ ํ์ดํ ํจ์
ํจ์ ํํ์์ผ๋ก ์ ์ํด์ผ ํฉ๋๋ค.
ํจ์ ๋ชธ์ฒด๊ฐ ํ๋์ ๋ฌธ์ผ๋ก ๊ตฌ์ฑ๋๋ค๋ฉด ํจ์ ๋ชธ์ฒด๋ฅผ ๊ฐ์ธ๋ ์ค๊ดํธ {}๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
// concise body
const power = x => x ** 2;
// ์ ํํ์ ๋ค์๊ณผ ๋์ผํ๋ค.
// block body
const power = x => { return x ** 2; };
power(2); // -> 4
๋จ, ํจ์ ๋ชธ์ฒด๊ฐ ํ๋์ ๋ชธ์ผ๋ก ๊ตฌ์ฑ๋๋ค ํด๋ ํจ์ ๋ชธ์ฒด์ ๋ฌธ์ด ํํ์์ด ์๋ ๋ฌธ์ด๋ผ๋ฉด ์ค๊ดํธ๋ฅผ ์๋ตํ ์ ์๋ค.
const arrow = () => const x = 1; // SyntaxError: Unexpected token 'const'
// ์ ํํ์ ๋ค์๊ณผ ๊ฐ์ด ํด์๋๋ค.
const arrow = () => { return const x = 1; };
๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์๊ดํธ ()๋ก ๊ฐ์ธ ์ฃผ์ด์ผ ํ๋ค.
const create = (id, content) => ({ id, content });
// ์ ํํ์ ๋ค์๊ณผ ๋์ผํ๋ค.
const create = (id, content) => { return { id, content }; };
create(1, 'JavaScript'); // -> {id: 1, content: "JavaScript"}
ํ์ดํ ํจ์๋ ์ฝ๋ฐฑํจ์๋ก์ ์ ์ํ ๋ ์ ์ฉํ๋ค.
// ES5
[1, 2, 3].map(function (v) {
return v * 2;
});
// ES6
[1, 2, 3].map(v => v * 2); // -> [ 2, 4, 6 ]
โ๏ธ REST ํ๋ผ๋ฏธํฐ
ํจ์์ ์ ๋ฌ๋ ์ธ์๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ์ ๋ฌ๋ฐ๋๋ค.
ํจ์ ์ ์ ์ ์ ์ธํ ๋งค๊ฐ๋ณ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ํจ์ ๊ฐ์ฒด์ length ํ๋กํผํฐ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
function foo(param, ...rest) {
console.log(param); // 1
console.log(rest); // [ 2, 3, 4, 5 ]
}
foo(1, 2, 3, 4, 5);
console.log(foo.length) // 1
function bar(param1, param2, ...rest) {
console.log(param1); // 1
console.log(param2); // 2
console.log(rest); // [ 3, 4, 5 ]
}
bar(1, 2, 3, 4, 5);
console.log(bar.length) // 2
โ๏ธ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ
์ธ์๊ฐ ์ ๋ฌ๋์ง ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ undefined์ด์ง๋ง ES6์์ ๋์ ๋ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ๋ฉด ํจ์ ๋ด์์ ์ํํ๋ ์ธ์ ์ฒดํฌ ๋ฐ ์ด๊ธฐํ๋ฅผ ๊ฐ์ํํ ์ ์๋ค.
ES5
function sum(x, y) {
// ์ธ์๊ฐ ์ ๋ฌ๋์ง ์์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ด undefined์ธ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ํ ๋นํ๋ค.
x = x || 0;
y = y || 0;
return x + y;
}
console.log(sum(1, 2)); // 3
console.log(sum(1)); // 1
ES6
function sum(x = 0, y = 0) {
return x + y;
}
console.log(sum(1, 2)); // 3
console.log(sum(1)); // 1
๐ฉ๐ป ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive๋ฅผ ์ ๋ ํ๊ณ ์ ๊ฐ ์ดํดํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ ๋๋ค ๐ฉ๐ป
'๐Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL]๊ฐ์ฒด ๋ถ๋ณ์ฑ, ๊ฐ์ฒด๋ฅผ immutableํ๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ, ๋ฐฐ์ด์ immutableํ๊ฒ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ (0) | 2023.01.05 |
---|---|
[Deep Dive] ํ๋ก๋ฏธ์ค, Promise, Promise.all (0) | 2023.01.03 |
[Deep Dive] ajax (0) | 2022.12.20 |
[Deep Dive] ๋๊ธฐ์ ๋น๋๊ธฐ, ๋น๋๊ธฐ๊ฐ ์ฒ๋ฆฌ๋ ์ ์๋ ์ด์ (0) | 2022.12.19 |
[Deep Dive] REST API๊ฐ ๋ฌด์์ธ๊ฐ์? (0) | 2022.12.16 |