선언적 함수란? (어느위치에서나 사용 가능)
- 함수 선언시 이름이 있는것
- 컴파일 시점에 함수 정보를 등록 (함수 호이스팅)
- 함수를 선언하기 이전에 사용이 가능하다. (호이스팅이 되기 때문에) (선언문이 위로 끌어 올려짐)
- 함수가 별도의 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 호출
JavaScript - 함수의 오버로딩과 호이스팅 (0) | 2018.11.28 |
---|---|
JavaScript - ES6 - arrow function (0) | 2018.11.28 |
JavaScript - 함수(function) (0) | 2018.10.29 |
JavaScript - NodeJS를 이용한 외부모듈(서드파티) 이용하기 (0) | 2018.10.29 |
JavaScript - 예외처리(try ~ catch ~ finally) (0) | 2018.10.26 |
댓글 영역