๐Ÿ’งJS:Functions

hojuneยท2023๋…„ 8์›” 26์ผ

Web Development

๋ชฉ๋ก ๋ณด๊ธฐ
17/34

๐ŸŒˆFunction

๊ตฌ์„ฑ์š”์†Œ

1. ํ•จ์ˆ˜์˜ ์ด๋ฆ„ (์‹๋ณ„์ž)
2. ๊ด„ํ˜ธ ์•ˆ์— ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„๋˜๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)
 ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)๋ž€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ˆ˜(argument)๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„
 ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜์ด๋‹ค
3. ์ค‘๊ด„ํ˜ธ({})๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰๋ฌธ

๋ฌธ๋ฒ•

function ํ•จ์ˆ˜์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜1, ๋งค๊ฐœ๋ณ€์ˆ˜2,...) 
{
    ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹คํ–‰๋ฌธ;
}
๋ฐ˜ํ™˜๋ฌธ return ์‚ฌ์šฉ๊ฐ€๋Šฅ
ํ•จ์ˆ˜๋ฅผ ์ค‘์ง€์‹œํ‚ค๊ณ  ํ•ด๋‹น ๊ฐ’์„ ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฐ˜ํ™˜
๋ฐ˜ํ™˜๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ๋ฌธ๋ฒ•์  ๊ตฌ๋ฌธ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ’(value)์ด๊ธฐ๋„ ํ•˜๋‹ค
๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๊ฐ€ ๋ณ€์ˆ˜์— ๋Œ€์ž…๋  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋  ์ˆ˜๋„ ์žˆ๋‹ค

๐ŸŒˆFunction scope

const creature = "Common Sea Dragon";
 
function scubaDive()
{
    const creature = "Spanish Dancer"; 
    console.log(creature);
}
 
scubaDive();

+) 1. scubaDive ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋ฟ ํ•จ์ˆ˜ ๋ฐ”๊นฅ๊ณผ ์•ˆ์€ ๋ณ„๊ฐœ์ด๋‹ค
๋•Œ๋ฌธ์— console.log(creature)๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ •์˜์— ์˜ํ–ฅ์„ ๋ฐ›๊ณ 
์ถœ๋ ฅ๊ฐ’์€ "Spanish Dancer"๊ฐ€ ๋œ๋‹ค

2. ๋˜ํ•œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ •์˜๋œ ๊ฐ’์€ ๋‹น์—ฐํ•˜๊ฒŒ๋„ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ๋งŒ ์ ์šฉ๋œ๋‹ค ๋•Œ๋ฌธ์— scubaDive() ๋ฐ”๋กœ ์œ—์ค„์— creature๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด ์ถœ๋ ฅ๊ฐ’์€ "Common Sea Dragon"์ด ๋œ๋‹ค

๐ŸŒˆvar and let scope

for(let i =0;i<5;i++)
{
  let msg = "ASD";
  console.log(msg);
}
console.log(msg);

+)msg๋ณ€์ˆ˜๋Š” let์œผ๋กœ ์„ ์–ธ๋˜์–ด for๋ฌธ ์•ˆ์—์„œ๋งŒ ์ ์šฉ๋œ๋‹ค
๋•Œ๋ฌธ์— for๋ฌธ ๋ฐ”๊นฅ์— ์žˆ๋Š” msg ๋ณ€์ˆ˜๋‚ด์šฉ์€ ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค

for(let i =0;i<5;i++)
{
  var msg = "ASD";
  console.log(msg);
}
console.log(msg);

+)msg๋ณ€์ˆ˜๋Š” var๋กœ ์„ ์–ธ๋˜์–ด for๋ฌธ ๋ฐ–์—์„œ๋„ ์ ์šฉ๋œ๋‹ค
๋•Œ๋ฌธ์— for๋ฌธ ๋ฐ”๊นฅ์— ์žˆ๋Š” msg ๋ณ€์ˆ˜๋‚ด์šฉ์€ ์ถœ๋ ฅ๋œ๋‹ค

์ด๋Ÿฐ ์ฐจ์ด์ ์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์—ฌ์ง€๋•Œ๋ฌธ์— var์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค

๐ŸŒˆmore function (ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ์ง€์ •, ๊ณ ์ฐจํ•จ์ˆ˜, ๋ฐ˜ํ™˜ํ•จ์ˆ˜,

ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
ex) const add = function(x,y)
{
  return x+y;
}
input add(x,y)

๊ณ ์ฐจ ํ•จ์ˆ˜
function callTwice(func){
  func();
  func();
}

function rollDie(){
  const roll = Math.floor(Math.random() *6) +1
  console.log(roll)
}

callTwice(rollDie)

๋ฐ˜ํ™˜ ํ•จ์ˆ˜
ํ•จ์ˆ˜์•ˆ์— return ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ

๐ŸŒˆMethods

๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ์ข…์†๋œ ํŠน์„ฑ์œผ๋กœ ํ•จ์ˆ˜์— ํฌํ•จ๋˜๋Š” ๊ฐœ๋…
๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ ๋ชจ๋“  ํ•จ์ˆ˜๊ฐ€ ๋ฉ”์„œ๋“œ ์ธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค 

method์„ ์–ธ (์ค‘๊ด„ํ˜ธ,์‰ผํ‘œ(,),์ฝœ๋ก (:)) ์‚ฌ์šฉ

ex) const myMath = {
  PI : 3.14159,
  square(num) {
    return num*num;
  }, 
  cube(num) {
    return num ** 3;
  }
}

ํ˜ธ์ถœ 
myMath.cube(2)

๐Ÿ’งThis

this์˜ ๊ฐ’์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค
this ํ‚ค์›Œ๋“œ๋Š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐœ์ฒด๋ฅผ ์ฐธ์กฐํ•œ๋‹ค

1. ๊ฐ์ฒด๋ฉ”์„œ๋“œ์—์„œ๋Š” this๊ฐ€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
2. ๋‹จ๋…์œผ๋กœ ์“ฐ์ผ ๋•Œ, this๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ„
3. ํ•จ์ˆ˜์—์„œ๋Š” this๊ฐ€ ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ„

์ผ๋‹จ์€ ์ด ์ •๋„๋งŒ ์งš๊ณ  ๋‹ค์Œ์— ๋Œ์•„์˜ค์ž

์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„ค๋ช…์ด ์ž˜๋˜์–ด ์žˆ๋Š” ์ด ๊ณณ์„ ์ฐธ์กฐ https://velog.io/@harimad/JavaScript%EC%97%90%EC%84%9C-this-%ED%82%A4%EC%9B%8C%EB%93%9C%EB%9E%80

๐ŸŒˆTry and Catch

์˜ˆ์™ธ์ฒ˜๋ฆฌ

try {
    ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธธ ์›ํ•˜๋Š” ์‹คํ–‰ ์ฝ”๋“œ;
} catch (ex) {
    ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ์— ์‹คํ–‰๋  ์ฝ”๋“œ;
} finally {
    try ๋ธ”๋ก์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋  ์ฝ”๋“œ;
}

try ๋ธ”๋ก = ํ•„์ˆ˜
catch,finally ๋ธ”๋ก = ์„ ํƒ

throw - ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค 
ํ‘œํ˜„์‹์—๋Š” ์˜ˆ์™ธ ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž(Number)๋‚˜ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด(String),
Error ๊ฐ์ฒด(Object) ๋“ฑ์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

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