TIL 2 (3) : ํ•จ์ˆ˜ (JavaScript)

ํ•จ์ˆ˜ (function)

์ง€์‹œ์‚ฌํ•ญ๋“ค(์ฝ”๋“œ)์˜ ๋ฌถ์Œ.

์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜์˜ ํŠน์ง•์œผ๋กœ ๋ฐ˜๋“œ์‹œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถœ๋ ฅ(return)ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ถœ๋ ฅ๊ฐ’์ด ์—†๋”๋ผ๋„ undefined๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

 

1. ์„ ์–ธ (declaration)

์„ ์–ธ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ์–ธ์„ ์œ„ํ•ด์„œ๋Š” keyword, name, parameter, body๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ•จ์ˆ˜ ์„ ์–ธ์‹
    function getRectangleArea(width,height) {
        let rectangleArea=(width*height);
        return rectangleArea
    }โ€‹
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹
    let getRectangleArea=function(width,height) {
        let rectangleArea=(width*height);
        return rectangleArea
    }โ€‹
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
    const getRectangleArea=(width,height) => {
        let rectangleArea=width*height;
        return rectangleArea;
    }โ€‹
    let getRectangleArea = (width, height) => width * heightโ€‹
    ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ '๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ํ• ๋‹น'ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ function์„ ์“ฐ๋Š” ๋Œ€์‹  '=>'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ(body)์— return๋ฌธ๋งŒ ์žˆ์œผ๋ฉด, return๊ณผ {} ์ค‘๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ํ•จ์ˆ˜ ๋‚ด์˜ ํ‘œํ˜„์‹์ด 2์ค„ ์ด์ƒ์ธ ๊ฒฝ์šฐ, ์ƒ๋žต ์‹œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๋ฏ€๋กœ return๊ณผ ์ค‘๊ด„ํ˜ธ๋ฅผ ์จ์ฃผ๋Š” ๊ฒƒ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.
    return๋ฌธ์—์„œ () ์†Œ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ•จ์ˆ˜ ์„ ์–ธ์‹๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ์ฐจ์ด์ ์œผ๋กœ๋Š” ํ˜ธ์ด์ŠคํŒ…(hoisting)๊ณผ ์„ธ๋ฏธ์ฝœ๋ก (;)์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ํ˜ธ์ด์ŠคํŒ…์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ ์•„๋ž˜๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ˜ธ์ด์ŠคํŒ…์„ ํ†ตํ•ด ๋ฐ‘์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ์‹์€ ํ˜ธ์ด์ŠคํŒ…์ด ๋˜์ง€๋งŒ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ํ˜ธ์ด์ŠคํŒ…์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ

ํ•จ์ˆ˜ ์„ ์–ธ์‹์€ ์„ธ๋ฏธ์ฝœ๋ก (;) ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ์กฐ)

์„ธ๋ฏธ์ฝœ๋ก ์˜ ์—ญํ• 

https://ko.javascript.info/function-expressions

ํ•จ์ˆ˜ ํ‘œํ˜„์‹๊ณผ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ์ฐจ์ด์ 

https://walkinpcm.blogspot.com/2019/11/javascript-arrow-function.html

 

2. ํ˜ธ์ถœ (call, invocation)

์„ ์–ธ์„ ํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ž…๋ ฅ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ ์–ธ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌ์ธ์ž(argument)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.