2017-11-22 9 views
0

일반적인 생각은 module.export 함수 내에 함수가 필요하다는 것입니다. 두 파일 (foo.jsmath.js)이 있다고 가정 해 보겠습니다. 그들은 같은 폴더에 있습니다.모듈 내에서 NodeJS 다중 함수 내보내기

// foo.js 
var calc = require('./math.js'); 

var a = 3, b = 5; 
console.log(calc.calc(a, b)); 

두 모듈을 함께 추가하도록 내보내기 모듈에 요청합니다.

// math.js 
module.exports = { 
    calc: function(a, b) { 
     // I need to call another function which does the math right here. 
    } 
} 

나는 아래의 시도처럼 둥지 그들, 그냥 undefined 반환하면

.

// math.js 
module.exports = { 
    calc: function(a, b) { 
     x(a, b); 

     function x(a, b) { 
      return a + b; 
     } 
    } 
} 

undefined.

// math.js 
module.exports = { 
    calc: function(a, b) { 
     x(a, b); 
    } 
} 

function x(a, b) { 
    return a + b; 
} 

b is not a function.

내보내기 모듈에서 함수를 중첩하는 방법은 무엇입니까? 나는 노드에 익숙하지 않기 때문에 초등 질문처럼 들릴지 모르지만, 실제로는 작동하지 않습니다.

편집 : 이것은 매우 단순합니다. 나는 첫 번째 계산 함수에서 수학을 할 수는 있지만 실제로 가능한 것은 아닙니다.

리턴 명령문이 값 함수 실행을 종료하고 지정
+0

을 foo.js , b);'전화. –

+0

'b is not a function' 오류가 보여준 코드와 일치하지 않습니다. –

답변

1

전용 범위 설정 방법에 중첩 기능

module.exports = { 
    calc: function(a, b) { 
     return x(a, b); //Function should Return a Value  
     function x(a, b) { 
     return a + b;  
     } 
    } 
} 

에 함수 호출

반환하도록

module.exports = { 
    calc: function(a, b) { 
     return x(a, b);     
    } 
} 

function x(a, b) { 
     return a + b;  
     } 

출력

-> 당신이`X (A 앞에`return`를 그리워하기 때문에 당신은 calc``에서 아무것도 반환하지 않습니다

var calc = require('./math.js'); 
console.log(calc.calc(1,2)); ----> 3