Edit in JSFiddle

// 명시적 함수
function fn(){
    return this;
}

console.log(typeof fn);

// 익명 함수 or 함수 생성자(아래와 코드와 같이 함수 몸체를 "문자열"로 할당하는 표현식 때문에 코드 가독성이 떨어지는 단점이 존재한다. 하지만 필요한 경우 유용히 사용할 수 있다.)
var fn = (function(body){
    return new Function('x', 'y', body);
})('return x + y;');

console.log(fn(1, 2));

// 익명함수
var fn = function(){
    return this;
}

console.log(fn);

// 함수 리터럴도 명시적인 이름을 줄 수 있지만 이것은 함수 안에서만 접근 가능하다.
var fn = function _fn(){
    // _fn 기명 함수는 리터럴 내부에서만 접근 가능하며, 외부에서 호출 시 선언되지 않았다는 오류를 발생한다.
    return _fn;
}

console.log(fn);
try{
    console.log(fn1);
}
catch(e){
    console.log(e.message);
}