본문 바로가기
javascript

1114_함수정의

by 신방동불주먹 2022. 11. 15.

<함수 정의문>

 

1. function

function 함수명(매개변수1,...){
    실행문;
    return 리턴값;
 }

 

  • Function으로 선언된 함수는 호이스팅(hoisting) 되어진다.
  • hoisting : 함수 정의문보다 호출문이 먼저 나와도 함수 정의문을 끌어올려 함수를 호출
let a2=add(5,8);
console.log(a2); //함수의 hoisting

function add(x,y){
	 return x + y;
}

let a=add(10,20);
console.log(a);

 

 

2. 익명함수 

 

  • 함수명이 없는 함수를 선언하고 변수에 참조 가능
  • 익명함수는 hoisting이 불가능하다
add(5,8); //hoisting 불가

let add=function(x,y){
     return x + y;
}

let a=add(10,20);
console.log(a);

 

3. 생성자함수 

  • hoisting이 불가능하다
let add=new Function('x','y','return x + y')
let a = add(10,20);
console.log(a);

 

 

4. 화살표 함수 

 

let add= (x,y) => 실행문;
let add=(x,y) => x+y;
let a = add(10,20);
console.log(a);

 

 

<정의되어있는 함수 실행>

 

1. 함수명();
2. 참조변수();

 

 

<매개변수가 있는 함수 정의문>

 

  • 함수 호출 시 데이터 1은 매개변수1, 데이터2는 매개변수 2 ... 순서대로 대입된다.
function 함수명(매개변수1, 매개변수2, ...,매개변수n){
코드
}

함수명(데이터1, 데이터2, ...,데이터n)

 

 

<매개변수 없이 함수에 전달 된 값 받기>

 

arguments

  • 함수 정의문에서 매개변수가 없는 상태에서 데이터 전달하여 함수 호출하면 그 값이 배열에 저장된다
  • 그 값을 arguments 라는 변수로 참조
function 함수명(){
arguments;
}

함수명(데이터1, 데이터2, 데이터3);

 

예시

 

function sum(){
var sum = arguments[0] + arguments[1] + argumengs[2];
document.write(sum);
}

sum(10,20,30); //60출력

 

for문 사용

let sum1=0;
function sum(){
        for(let i=0;i < arguments.length;i++){
       sum1 += arguments[i];
		}
document.write(sum1);
}

sum(10,20,30,40,50); //150출력

 

(...args)

  • 몇개의 가변인자가 올지 모를 때
  • 위 결과와 동일
let sum2=0;
function sum(...number){
for(let i=0;i<number.length;i++){
        sum2 += number[i];
        }
	document.write(sum2);
}

sum(10,20,30,40,50); //150출력