2012-01-31 5 views
3

가능한 중복 :
JavaScript: var functionName = function() {} vs function functionName() {}
Function declaration - Function Expression - Scopevar 함수와 javascript 함수의 차이점은 무엇입니까?

내가 약 var a = 1을 배운 로컬 변수를 정의하지만, 기능에 대해서 이야기, 나는 그것은 현재 범위 내에서만 사용할 수 생각 var 변수가 동작 할 때 다음 두 코드 스 니펫의 차이점은 무엇입니까?

function aPrint() { 
console.log('a'); 
} 

var a = function aPrent() { 
console.log('a'); 

} 

답변

1

첫 번째 예는 "함수 선언"입니다 참조하십시오. 선언 된 범위의 어디에서나 사용할 수있는 함수를 선언하므로 (소스 코드에 나타나기 전에 호출 할 수 있습니다). 이것은 때로 "호이 스팅 (hoisting)"이라고도 알려져 있습니다 (예를 들어, 호이스트의 상단으로 올라갑니다).

두 번째 예는 "명명 된 함수 식"입니다. 변수 선언은 함수 선언과 같이 정의 된 범위의 맨 위로 끌어 올 수 있지만 할당은 예상 한 위치에서 여전히 발생하므로 함수에 변수가 할당 될 때까지 함수를 호출 할 수 없습니다 .

단지 함수는 이름이없는 "함수 표현식"이며, 세 번째 옵션은 (는 익명 함수이기)가 :

var a = function() { 
    console.log('a'); 
} 

당신은 아마 당신은 발견 할 것이다 명명 된 함수 표현식에는 거의 사용하지 않지만 (디버깅 할 때 유용 할 수 있음) 일반적으로 익명 함수를 사용하는 것이 좋습니다. 명명 된 함수 표현식에서 이름은 함수 자체 내에서만 범위에 있으므로 함수를 이름으로 정상적으로 참조 할 수 없습니다.

관련 문제