선언적 함수(함수 선언식)

  • 선언적 함수 : 이름이 있는 함수
    ⭐ 함수명은 주로 동사형을 사용
// 선언적 함수
function check() {
	document.write('함수가 호출되었습니다.<br>');
}

// 함수 호출
check();

 

  • 매개변수가 있는 선언적 함수
    ⭐ 자바스크립트는 매개변수의 자료형을 작성하지 않는다.
function check2(msg) {
	document.write(msg + '을 좋아합니다.<br>');
}

// 함수 호출
check2('가을');

 

  • 반환값이 있는 선언적 함수
    ⭐ 자바스크립트는 반환형을 작성하지 않는다.
function check3(num) {
	 return num*num;
}

// 함수 호출
var number = check3(10);
document.write('number = ' + number + '<br>');

 

 

익명 함수(함수 표현식)

  • 익명 함수 : 함수명이 없는 함수
// 익명 함수
var play = function(){
	document.write('Let's Play!<br>');
};

// 함수 호출
play();

 

  • 매개변수가 있는 익명 함수
var play2 = function(item) {
		document.write(item + '를 좋아합니다.<br>');
}

// 함수 호출
play2('축구');

 

  • 반환값이 있는 익명 함수
var play3 = function(x,y) {
	return x+y;
}

// 함수 호출
var result = play3(5, 8);
document.write('result = ' + result);

 

 

함수 주의사항

  • 함수의 이름이 같을 경우, 마지막 함수가 실행됨
function 함수() {
	document.write('함수 A<br>');
}

function 함수() {
	document.write('함수 B<br>');
}

함수();

// [출력결과] 함수 B

 

  • 동일한 변수명에 익명함수를 대입할 경우, 마지막 함수가 실행됨
var 함수3 = function() {
	document.write('함수 D<br>');
};

var 함수3 = function(){
	document.write('함수 E<br>');
};

함수3();

// [실행결과] 함수 E

 

 

함수 호이스팅(Hoisting)

  • 함수 호이스팅이란 함수의 선언문이 유효 범위(Scope)의 최상단 이동하도록 코드가 자동 변환되는 것을 말한다.

 

  • 함수를 먼저 호출하고 선언하는 경우, 정상적으로 실행됨
    ⭐ 함수 선언문 형식일 때만 호이스팅 된다.
함수2();

function 함수2() {
	document.write('함수 C<br>');
}

// [출력결과] 함수 C

 

  • ⚠️ 변수에 함수를 할당하는 경우, 에러발생!
함수4();

var 함수4 = function() {	// 에러 발생!!
	document.write('함수4');
}