상세 컨텐츠

본문 제목

JavaScript - 선언적 함수와 익명 함수

개발/JavaScript

by 뉴에이스 2018. 10. 29. 13:40

본문

선언적 함수란? (어느위치에서나 사용 가능)
- 함수 선언시 이름이 있는것
- 컴파일 시점에 함수 정보를 등록 (함수 호이스팅)
- 함수를 선언하기 이전에 사용이 가능하다. (호이스팅이 되기 때문에) (선언문이 위로 끌어 올려짐)
- 함수가 별도의 return문을 사용하지 않은 경우 디폴트로 undefined가 반환된다.

 

소스

 

"use strict"
// fn1이 선언되기 이전에 호출이 가능하다. (컴파일시 함수의 호이스팅 과정에 의해서)
var result = fn1(100, 200);
console.log("fn1 : ", result)
function fn1(num1, num2) {
    return num1 + num2;
}

function fn2() {

}
result = fn2();
console.log(result);
 
결과
 
fn1 :  300
undefined

 

익명 함수란?
- 함수의 이름이 없다.
- 이름이 없기 때문에 어떻게 호출해야 하는가? - 변수에 담아서 사용함..
- 함수를 변수에 넣어서 사용 : 일급객체의 특성... (값의 개념.. 문자..숫자..)

 

소스

 

var fn1 = function() {
  console.log("이름 없는 함수 익명함수..");
};

fn1(); // 값

console.log("fn1 : ", fn1); // toString된 함수의 값 및 결과값
console.log("fn1() : ", fn1()); // ()를 붙일 경우 결과값 (return이 없어서 기본값인 undefined)

 

결과

 

이름 없는 함수 익명함수..
fn1 :  function () {
  console.log("이름 없는 함수 익명함수..");
}
이름 없는 함수 익명함수..
fn1() :  undefined

 

- 호이스팅 대상에서 제외된다.
- 선언 이전에는 호출이 불가능하다. 즉, 선언된 이후에만 호출이 가능

 

소스

 

//fn1();
var fn1 = function () {
    console.log("fn1 호출");
}
// 선언된 이후에 사용 가능
fn1();

 

결과

 

fn1 호출

 

관련글 더보기

댓글 영역