๐Ÿฅ‡ ์ผ๊ธ‰ ๊ฐ์ฒด [JS]

hoheesuยท2024๋…„ 2์›” 6์ผ

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
1/8
post-thumbnail

โ˜€๏ธ ์ผ๊ธ‰ ๊ฐ์ฒด

๐Ÿ’ก ์ผ๊ธ‰๊ฐ์ฒด๋ž€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. [์œ„ํ‚ค๋ฐฑ๊ณผ - ์ผ๊ธ‰๊ฐ์ฒด]

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ผ๊ธ‰๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•จ์ˆ˜๋ฅผ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โญ๏ธ ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹น

ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

const newFnc = () => {
  console.log('hello world');
}
newFnc()

โญ๏ธ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ „๋‹ฌ

ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝœ๋ฐฑํ•จ์ˆ˜๋‚˜๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ด์šฉํ•œ๋‹ค.

function callFnc(func){
  func();
}
const newFnc = () => {
  console.log('hello world');
}
callFnc(newFnc);

๐Ÿ’ก ์ฝœ๋ฐฑํ•จ์ˆ˜๋ž€ ์–ด๋– ํ•œ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์“ฐ์ด๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ํ›„์— ์ฝœ๋ฐฑํ•จ์ˆ˜์— ๋Œ€ํ•ด ๋”์šฑ ์ž์„ธํžˆ ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
๐Ÿ’ก ๊ณ ์ฐจํ•จ์ˆ˜๋ž€ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ถœ๋ ฅ์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•จ์ˆ˜๋ผ ํ•˜๊ธฐ๋„ ํ•˜๋ฉฐ ์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ๊ณ ์ฐจํ•จ์ˆ˜์˜ ๋ฒ”์ฃผ์•ˆ์— ๋“ค์–ด๊ฐ„๋‹ค.

โญ๏ธ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋Š” ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ด๋‹ค.
์ด๋Ÿฌํ•œ ํŠน์ง•์€ ํ•จ์ˆ˜ํŒฉํ† ๋ฆฌ๋‚˜ ํด๋กœ์ €๋ฅผ ์ž‘์„ฑํ• ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

function createAdder(num){
  return function (x) {
    return x + num
  }
}
const addN = createAdder(5);
console.log(addN(10)); // 15 ์ถœ๋ ฅ

โญ๏ธ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ํ•จ์ˆ˜๋ฅผ ํ• ๋‹น

ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ํ• ๋‹น๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜์žˆ๋‹ค.

const person = {
  name: 'hoheesu',
  sayHello: function () {
    console.log(`Hello my name is ${this.name}`)
  }
}
person.sayHello(); // "Hello my name is hoheesu"

๐Ÿ’ฌ ์—ฌ๊ธฐ ๋‚˜์˜ค๋Š” this์— ๋Œ€ํ•ด์„œ๋„ ์ถ”ํ›„์— ํฌ์ŠคํŠธ๋กœ ์ž‘์„ฑํ•  ์˜ˆ์ •์ด๋‹ค.

โญ๏ธ ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ํ•จ์ˆ˜๋ฅผ ํ• ๋‹น

ํ•จ์ˆ˜๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ๋„ ํ• ๋‹น/์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋‹ค.

const myArray = [
  function(a,b) {
    return a+b
  },
    function(a,b) {
      return a-b
  }
]
console.log(myArray[0](5,10) // 15 ์ถœ๋ ฅ
console.log(myArray[0](5,10) // 5 ์ถœ๋ ฅ

โ—๏ธ๊ฒฐ๋ก 

JavaScript์—์„œ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งค์šฐ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ์กฐํ•ฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ชจ๋“ˆํ™”๋œ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

profile
๐Ÿค”๐Ÿ‘๐Ÿ’ก๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป๐Ÿคฏ๐Ÿ˜‡

0๊ฐœ์˜ ๋Œ“๊ธ€