[JavaScript] 함수 정리


1. 함수

반복 사용되는 코드를 구조화하거나 재활용을 목적

자주 사용하는 코드실행문을 담아두고 언제든지 꺼내쓰는 방식 코드 재사용 , 코드줄이기 , 코드간소화

let function 함수명(){ /* 실행코드 */
}
함수명() - 함수호출

=>
function app(){
	console.log('함수 호출');
};
app(); //함수호출
{
  function fx(num){
    //num:number
    let x = num+10
    // 100+10=110
    console.log(`${x}\n--------------------`)
  }
  fx(100); //fx의 매개변수 num값이 100

  console.log(`두수의합은?`)
  sum(10,30);
  function sum(num1,num2){
    //num1:number,num2:number
  let num3 =num1+num2
    console.log(`합=${num3}\n--------------------`);
  }

  console.log("네수의차")
  sub(100,20,30,10)
  function sub(num1,num2,num3,num4){
    // num1:number,num2:number,num3:number num4:number
    let numsub = num1-num2-num3-num4
    console.log(`차=${numsub}\n--------------------`);
  }

  console.log("두수의곱")
  mul(5,3,2)
  function mul(num1,num2,num3){
    // num1:number,num2:number,num3:number
    let nummul = num1*num2*num3
    console.log(`곱=${nummul}\n--------------------`)
  }

  console.log("두수의몫")
  div(100,15)
  function div(num1,num2){
    // num1:number,num2:number
    let numdiv = num1/num2
    console.log(`몫=${numdiv}\n--------------------`)
  }

  console.log("두수의 나머지")
  mod(20,6)
  function mod(num1,num2){
    // num1:number,num2:number
    let nummod = num1%num2
    console.log(`나머지=${nummod}\n--------------------`)
  }
}

=> 결과값

[Running] node "/workspaces/codespaces-blank/index.js"
110
--------------------
두수의합은?
=40
--------------------
네수의차
=40
--------------------
두수의곱
=30
--------------------
두수의몫
=6.666666666666667
--------------------
두수의 나머지
나머지=2
--------------------

[Done] exited with code=0 in 0.046 seconds

2. 콜백함수

함수를 변수에 저장할 수 있는 함수를 매개변수로 전달된 함수

{
  function make(callback){
    for(let i=0; i<=10; i++){
      //매개변수로 전달된 함수 호출 => 0번째부터 10번째 인덱스까지 실행
      callback()
    }
  }

  make(function(){
    console.log("함수호출 완료")
  })
}

=> 결과값

[Running] node "/workspaces/codespaces-blank/index.js"
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료
함수호출 완료

[Done] exited with code=0 in 0.051 seconds

3. 재귀함수

함수를 반복문 처럼 여러번 호출하기 위해 사용. 최초함수를 호출하면 함수 정의문 내에서 실행문으로 함수를 다시 호출하는것

{
  function gugu(level,depth=1){
    if(depth>9){
      //밖으로 빠져나감
      return;
    }else{
      console.log(`${level}X${depth}=${(level*depth)}`);
      //재귀 함수 : 자기 자신의 함수를 호출
      gugu(level,depth+1);
    }
  }

  let dan = 6;  // 구구단 6단 실행
  gugu(dan);
}

=> 결과값

[Running] node "/workspaces/codespaces-blank/index.js"
6X1=6
6X2=12
6X3=18
6X4=24
6X5=30
6X6=36
6X7=42
6X8=48
6X9=54

[Done] exited with code=0 in 0.048 seconds

4. 즉시함수


{
	//기명 즉시실행함수
  const init =()=>{
    console.log('화살표 즉시함수')
  }
  (()=>{
    init();
  })();

	//익명 즉시실행함수

	(function() {
		console.log('화살표 즉시함수'); // "함수 호출" 출력
	}());
}

=> 결과값

[Running] node "/workspaces/codespaces-blank/index.js"
화살표 즉시함수

[Done] exited with code=0 in 0.046 seconds

5. 시간차함수


//콜백함수
1. setTimeout(()=>{ // 한번만 실행
    실행문
  },시간차)

2: setInterval(함수,시간차)=>//매시간마다 계속 ex)배너,롤링

  해지: clearInterval(변수)

  변수=setInterval(함수명,시간차)
  해지:clearInterval(변수)

예제 테스트 활용

let timeID = null,
  count = 0,
  interval = 1000;
let start = document.querySelector(".start");
let stop = document.querySelector(".stop");

const make = () => {
  count++;
  document.querySelector(".box").innerHTML = count;
};
start.addEventListener("click", () => {
  timeID = setInterval(make, interval);
});
stop.addEventListener("click", () => {
  clearInterval(timeID);
});

스크린샷.png