2010-12-30 5 views
1

좋아, NodeJS의 컨텍스트에서 CommonJS 모듈 시스템으로 실험 해 보겠습니다.CommonJS 모듈 (nodejs 포함), strangeness

module.exports = pricingCalculator; 

function pricingCalculator (options) { 
    var target = {}; 
    return target; 
} 

이것은 작동합니다. 아마도 pricingCalculator의 변수 선언은 함수 범위의 맨 위에 올라서므로 어차피 함수가 참조로 전달되기 때문에 잘못 정렬하는 것은 중요하지 않습니다. 알 겠어. 내가 이해하지 못하는 이유는 다음과 같은 두 가지 버전이 작동하는 이유입니다.

module.exports = pricingCalculator; 

var pricingCalculator = function (options) { 
    var target = {}; 
    return target; 
} 

실패합니다.

module.exports = pricingCalculator; 

pricingCalculator = function (options) { 
    var target = {}; 
    return target; 
} 

실패. 무슨 일이 일어나고 있는지 깊이 알기를 호기심.

+0

문제에 대한 자세한 설명을 찾을 수 있었습니까? –

답변

0

첫 번째 예제에서 함수는 할당 (자바 스크립트 방식) 전에 정의됩니다.
두 번째 및 세 번째 예의 할당은 순서대로 실행됩니다.

+0

좋아요, 근본적으로 첫 번째 예제는 재정렬됩니다 (또는 함수 정의가 범위의 맨 위로 올라갔습니다). –

+0

잠깐, 두 번째와 세 번째 예제가 작동 함을 의미합니까? –

+0

첫 번째는 기능이므로 작동합니다. 두 번째 것은 할당 된 값이없는 알려진 변수이므로 작동하지 않습니다. 세 번째 변수는 아직 정의되지 않았습니다. 또는 나는 아직도 요점을 놓치고 있냐? –