
๐ก
์ผ๊ธ๊ฐ์ฒด๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ ์ฐ์ฐ์ ๋ชจ๋ ์ง์ํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. [์ํค๋ฐฑ๊ณผ - ์ผ๊ธ๊ฐ์ฒด]
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๊ฐ ์ผ๊ธ๊ฐ์ฒด๋ก ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์, ํจ์๋ฅผ ๋งค์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ ํ ์ ์๋ค.
ํจ์๋ ๋ณ์์ ํ ๋นํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ๊ฐ์ผ๋ก ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณ์์ ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
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์์ ํจ์๋ ์ผ๊ธ๊ฐ์ฒด๋ก ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์, ๋งค์ฐ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ํจ์๋ฅผ ๋ค์ํ๊ฒ ์กฐํฉํ์ฌ ์๋ก์ด ํจ์๋ฅผ ๋ฐํํ๋ ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ ๋ณต์กํ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. ์ฝ๋๋ฅผ ๋์ฑ ๊ฐ๊ฒฐํ๊ณ ๋ชจ๋ํ๋ ํํ๋ก ์์ฑํ๊ธฐ ์ฝ๋ค๋ ๊ฒ์ด๋ค.