Frontend๐ŸŽจ/JavaScript๐Ÿ’›, TypeScript๐Ÿ’™

JavaScript ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๊ด„ํ˜ธ ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ(+์ต๋ช… ํ•จ์ˆ˜)

JanuDev 2025. 11. 10. 17:57

์–ด๋–ค๊ฑด () => {} ์ด๋ ‡๊ฒŒ ์“ฐ๊ณ  ์–ด๋–ค๊ฑด () => ({}) ์ด๋ ‡๊ฒŒ ์“ฐ๊ณ  ์–ด๋–ค๊ฑด ({}) ์ด๋ ‡๊ฒŒ ์“ฐ๋‹ˆ ๋ญ๋ฅผ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์จ์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ค์„œ ์ •๋ฆฌํ•œ๋‹ค.

 

1. (์ž…๋ ฅ) => {๋ช…๋ น๋ฌธ} — ๋ธ”๋กํ˜• ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ์ต๋ช… ํ•จ์ˆ˜์˜ ํ˜•ํƒœ ์ค‘ ํ•˜๋‚˜๋กœ, ์ต๋ช…ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ต๋ช… ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•  ๊ฒƒ.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฒผ๋‹ค.

(๋งค๊ฐœ๋ณ€์ˆ˜(= ์ž…๋ ฅ)) => {์‹คํ–‰๋ฌธ, ๋ช…๋ น๋ฌธ}

์†Œ๊ด„ํ˜ธ()์—๋Š” ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์ค‘๊ด„ํ˜ธ{}์—๋Š” ์‹คํ–‰ํ•  ์—ฌ๋Ÿฌ์ค„์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1๏ธโƒฃ ์ค‘๊ด„ํ˜ธ{} ์•ˆ์˜ ๋‚ด์šฉ์ด 1์ค„๋กœ ๋๋‚œ๋‹ค๋ฉด ์ค‘๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

const addOne = x => x + 1

โš ๏ธ ์ฃผ์˜! ์ค‘๊ด„ํ˜ธ๋ฅผ ์“ด๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ return์„ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

2๏ธโƒฃ ๋งŒ์•ฝ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ 1๊ฐœ๋ฉด ๊ด„ํ˜ธ()๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

const function = x => {
  console.log(x)
  return x + 1
}

 

3๏ธโƒฃ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์•„์˜ˆ ์—†๊ฑฐ๋‚˜ 2๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ๊ด„ํ˜ธ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค.

const function = (x, y) => {
  return x + y
}

 

4๏ธโƒฃ {} ์•ˆ์—๋Š” ๋ช…์‹œ์ ์œผ๋กœ return๋ฌธ์„ ์ž‘์„ฑํ•ด์•ผํ•˜๋ฉฐ, ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

2. (์ž…๋ ฅ) => (ํ‘œํ˜„์‹) — ๊ฐ’ ๋ฐ”๋กœ ๋ฐ˜ํ™˜

์ด ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

(์ž…๋ ฅ) => (๋‹จ์ผ ํ‘œํ˜„์‹)

๊ด„ํ˜ธ ์•ˆ์˜ ํ‘œํ˜„์‹์„ ์ž๋™์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜.

 

1๏ธโƒฃ return์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค = ํ•œ์ค„ ์งœ๋ฆฌ ๊ณ„์‚ฐ ํ˜น์€ ๊ฐ’์„ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

const function = x => ( x + 1 )

// ๊ด„ํ˜ธ๋Š” ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
const function = x => x + 1

return์€ ์•”๋ฌต์  ๋ฐ˜ํ™˜์ด๋‹ค.

 

2๏ธโƒฃ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์ค„์„ ์ž‘์„ฑํ•˜๋Š”๊ฑด ์˜ค๋ฅ˜์ด๋‹ค.

const f = x => (
  console.log(x)  // โŒ
  x + 1           // โŒ
)

์—ฌ๋Ÿฌ ์ค„์„ ํ‘œํ˜„์‹์—์„œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์˜ค๋ฅ˜. ๋ฐ˜๋“œ์‹œ ์—ฌ๋Ÿฌ ์ค„์€ ์ค‘๊ด„ํ˜ธ{}์—์„œ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

 

3๏ธโƒฃ ๊ด„ํ˜ธ๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด์„œ ์ž‘์„ฑํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค

const add = (x, y) => x + y;

 

3. (์ž…๋ ฅ) => ({๊ฐ์ฒด}) — ๊ฐ์ฒด ๋ฐ˜ํ™˜

(์ž…๋ ฅ) => ({๊ฐ์ฒด})

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—์„œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. JS์—์„œ {}๋Š” ๋ธ”๋ก๋ฌธ์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ์ฒด{}๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ()๋กœ ๊ฐ์‹ธ์„œ ๊ฐ์ฒด์ž„์„ ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

 

1๏ธโƒฃ {}์„ ()๋กœ ๊ฐ์‹ผ๋‹ค - ๊ฐ์ฒด์ž„์„ ๋ช…์‹œ

const createUser = (n, a) => ({
  name: n,
  age: a,
  createAt: new Date()
})

createUser("์‚ฌ์Šค์ผ€", 20) 
// {name: "์‚ฌ์Šค์ผ€", age: 20, createAt: ....}

 

2๏ธโƒฃ ์†Œ๊ด„ํ˜ธ()๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์‹คํ–‰๋ฌธ์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

// โŒ ์ž˜๋ชป๋œ ๋ฐฉ๋ฒ• - ๋ธ”๋ก์œผ๋กœ ํ•ด์„๋จ
const wrong = () => {
  name: '์‚ฌ์Šค์ผ€', age: 20 ...
}
// ๋ธ”๋ก๊ณผ ๊ฐ์ฒด์˜ ์ฐจ์ด
() => { x: 1 }     // ๋ธ”๋ก๋ฌธ (๋ ˆ์ด๋ธ” x), undefined ๋ฐ˜ํ™˜
() => ({ x: 1 })   // ๊ฐ์ฒด { x: 1 } ๋ฐ˜ํ™˜

 

4. (() => {})() — ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ (IIFE)

ํ•จ์ˆ˜์˜ ์ •์˜์™€ ๋™์‹œ์— ์ฆ‰์‹œ ์‹คํ–‰ 

๊ด„ํ˜ธ๋กœ ํ•จ์ˆ˜ ์ „์ฒด๋ฅผ ๊ฐ์‹ธ์„œ JS๊ฐ€ ํ‘œํ˜„์‹์œผ๋กœ ์ธ์‹ํ•˜๋„๋ก ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ ()๊ฐ€ ์‹ค์ œ ์‹คํ–‰ ํ˜ธ์ถœ

// ๊ฐ„๋‹จ ๋ฒ„์ „
const result = (() => 3 + 4)()
console.log(result) // 7

// ๋ณต์žก ๋ฒ„์ „
(() => {
  console.log("โญ");
  const temp = "โค๏ธ";
  return temp;
})();  // "โญ" ์ถœ๋ ฅ, "โค๏ธ" ๋ฐ˜ํ™˜

๊ฒฝํ—˜์ƒ ๊ทธ๋ ‡๊ฒŒ๊นŒ์ง€ ๋งŽ์ด ์“ฐ์ง€ ์•Š์•˜๋˜๊ฑฐ ๊ฐ™๋‹ค...

์ด๋Ÿฐ ๋А๋‚Œ์ด๋‹ค...

์ „์—ญ ์˜ค์—ผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฉ๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ „ํ†ต์ ์ธ JSํŒจํ„ด์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค๋Š”๋ฐ... ์‚ฌ์‹ค ํ•œ๋ฒˆ๋„ ๋ณธ ์  ์—†๋Š” ํ˜•ํƒœ๊ธด ํ•˜๋‹ค

 

5. ({}) — ๋นˆ ๊ฐ์ฒด ํ‘œํ˜„์‹

๊ทธ๋ƒฅ {}๋งŒ ์“ฐ๋ฉด ๋ธ”๋ก๋ฌธ์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์„ ์“ธ ๋•Œ ๊ด„ํ˜ธ๋กœ ๊ฐ์Œˆ

{}       // ๊ทธ๋ƒฅ ๋ธ”๋ก๋ฌธ, ๊ฐ’ ์—†์Œ
({})     // ๊ฐ์ฒด ํ‘œํ˜„์‹, ๊ฐ’์€ {}