๐ŸŽฏJavaScript์—์„œ Arrow Functions vs. Regular Functions

๋ฐœํ–‰: (2026๋…„ 1์›” 11์ผ ์˜คํ›„ 11:00 GMT+9)
4 min read
์›๋ฌธ: Dev.to

Source: Dev.to

Cover image for ๐ŸŽฏArrow Functions vs. Regular Functions in JavaScript

JavaScript ๋ฉด์ ‘์—์„œ ๊ฐ€์žฅ ํ”ํžˆ ํ˜ผ๋™๋˜๋Š” ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์™€ ์ผ๋ฐ˜ ํ•จ์ˆ˜์—์„œ this๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. this๊ฐ€ ๋•Œ๋•Œ๋กœ undefined๊ฐ€ ๋‚˜์˜ค๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ–ˆ๋‹ค๋ฉด, ์ด ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ ์ผ๋ฐ˜ ํ•จ์ˆ˜ โ€” this๋Š” ๋™์ 

์ผ๋ฐ˜ ํ•จ์ˆ˜์—์„œ๋Š” this์˜ ๊ฐ’์ด ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ํ˜ธ์ถœ๋˜๋Š”์ง€์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋ฉฐ, ์ •์˜๋œ ์œ„์น˜์™€๋Š” ๋ฌด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

const user = {
  name: 'Richa',
  greet: function () {
    console.log(this.name);
  }
};

user.greet(); // Richa

const greetCopy = user.greet;
greetCopy(); // โŒ undefined (or window.name in browsers)

์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ• ๊นŒ
this๋Š” ํ˜ธ์ถœ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์žƒ์œผ๋ฉด this๋Š” ๋” ์ด์ƒ user๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ โ€” this๋Š” ๋ ‰์‹œ์ปฌ

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ this๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒ์œ„ ์Šค์ฝ”ํ”„์—์„œ this๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค.

const user = {
  name: 'Richa',
  greet: () => {
    console.log(this.name);
  }
};

user.greet(); // โŒ undefined

์™œ ๊ทธ๋Ÿฐ๊ฐ€?
ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ „์—ญ this๋ฅผ ์ƒ์†๋ฐ›์œผ๋ฉฐ user ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โœ… ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ๋ฒ•

๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” this๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

const user = {
  name: 'Richa',
  greet() {
    console.log(this.name);
  }
};

user.greet(); // โœ… Richa

3๏ธโƒฃ ์ตœ์  ํ™œ์šฉ ์‚ฌ๋ก€: ์ผ๋ฐ˜ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ๋‚˜ ์ฝœ๋ฐฑ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ๋น›์„ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ this ์ปจํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

const team = {
  name: 'Frontend',
  members: ['Richa', 'Jane'],
  showMembers() {
    this.members.forEach(member => {
      console.log(`${member} is part of ${this.name}`);
    });
  }
};

team.showMembers();
// Richa is part of Frontend
// Jane is part of Frontend

forEach ์•ˆ์— ์ผ๋ฐ˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด this.name์€ undefined๊ฐ€ ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉด์ ‘ ๋Œ€๋น„ ๋‹ต๋ณ€

  • ์ผ๋ฐ˜ ํ•จ์ˆ˜๋Š” ๋™์  this๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค โ€” ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋ ‰์‹œ์ปฌ this๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค โ€” ์ƒ์œ„ ์Šค์ฝ”ํ”„์—์„œ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค.

๐ŸŽฏ ์ถ”๊ฐ€ ํŒ

React ์ปดํฌ๋„ŒํŠธ์—์„œ this๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ์ •๋ฆฌ

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์งง๊ฒŒ ์“ฐ๋Š” ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณด์กดํ•ด ์ค๋‹ˆ๋‹ค.

ํŠน์ง•์ผ๋ฐ˜ ํ•จ์ˆ˜ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
์ž์ฒด this ๋ณด์œ  ์—ฌ๋ถ€โœ… YesโŒ No
this๊ฐ€ ํ˜ธ์ถœ ์œ„์น˜์— ์˜์กดโœ… YesโŒ No
๊ฐ์ฒด ๋ฉ”์„œ๋“œ์— ์ ํ•ฉโœ… YesโŒ No
์ฝœ๋ฐฑ์— ์ ํ•ฉโŒ Often Noโœ… Yes

์ตœ์ข… ์ƒ๊ฐ

๋™์  this์™€ ๋ ‰์‹œ์ปฌ this์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๋ฉด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค:

  • ๋” ๊น”๋”ํ•˜๊ฒŒ โœ…
  • ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ โœ…
  • ๋ฒ„๊ทธ๊ฐ€ ์ ๊ฒŒ โœ…

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋‹จ์ˆœํžˆ ๋ฌธ๋ฒ•์„ ์ ˆ์•ฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปจํ…์ŠคํŠธ๋ฅผ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค. โšก

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

JavaScript์—์„œ ์ด๋ฒคํŠธ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ โ€“ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์™„์ „ ๊ฐ€์ด๋“œ

!JavaScript ์ด๋ฒคํŠธ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ปค๋ฒ„ ์ด๋ฏธ์ง€ โ€“ ์™„์ „ ์ดˆ๋ณด์ž ๊ฐ€์ด๋“œ https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=au...

JavaScript์—์„œ ๋น„๋™๊ธฐ

๐Ÿ”ด ๋™๊ธฐ์‹ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋๋‚œ ๋’ค์—์•ผ ๋‹ค์Œ ์ž‘์—…์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. javascript console.log'One'; console.log'Two'; console.log'Three'; ๐Ÿ‘‰ ์ถœ๋ ฅ One Two...

JavaScript ์Šค์ฝ”ํ”„ & ํด๋กœ์ €: ์™ธ์šฐ๋Š” ๊ฑธ ๋ฉˆ์ถ”๊ณ , ์ดํ•ดํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ผ

์†”์งํžˆ ๋งํ•ด๋ด…์‹œ๋‹ค. JavaScript ๊ธฐ์ˆ  ๋ฉด์ ‘์— ๋“ค์–ด๊ฐ€๋ฉด, ๋ฉด์ ‘๊ด€์€ Stack Overflow์—์„œ ๋ณต์‚ฌโ€‘๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค....

JS์—์„œ ํ•จ์ˆ˜, ๊ฐ์ฒด ๋ฐ ๋ฐฐ์—ด.

ํ•จ์ˆ˜ ํ•จ์ˆ˜๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋ธ”๋ก์ž…๋‹ˆ๋‹ค. JavaScript์—์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: 1. Function D...