Javascript 模块内函数的返回值
我创建了如下模块:Javascript 模块内函数的返回值,javascript,node.js,module,Javascript,Node.js,Module,我创建了如下模块: module.exports = function() { function func1 () { } function func2 () { } return function() { func1(); func2(); return value; }; } 当我调用另一个文件中的模块时 myModule=require('myModule') 使用模块 myModule()我得到一个未定义的值。我错了什么?
module.exports = function() {
function func1 () {
}
function func2 () {
}
return function() {
func1();
func2();
return value;
};
}
当我调用另一个文件中的模块时
myModule=require('myModule')
使用模块
myModule()
我得到一个未定义的值。我错了什么?您正在导出一个函数,该函数在调用时返回另一个函数,该函数将抛出一个ReferenceError
,表示value
未定义,您可以通过定义value
来缓解该问题
return function() {
func1();
func2();
return 1; //for example
};
为了运行它,您需要调用它两次
myModule()();
>> 1
我的猜测是,您只希望返回值,所以请将其包装在
如果希望
myModule()
返回一个值,则可以导出iLife:
module.exports = function () {
function func1() {
}
function func2() {
}
return function () {
func1();
func2();
return value;
}();
}
当我运行该代码时,我得到:
func1(){SyntaxError:Unexpected token{
。尝试提供一个实际演示您的问题的标记。修复了打字错误。现在应该可以在编辑之后工作了,当我运行该代码时,我现在得到了[Function]
(用var myModule=require('./myModule.js');console.log(myModule());
)好的,这是我也知道的get@Mazzy这是正确的,并且是上面代码的预期输出。问题是什么?对这段代码所做的很好的注释,但不是真正的答案…我认为它回答了它-因为函数正在返回,所以需要调用它来获得返回值。
module.exports = function () {
function func1() {
}
function func2() {
}
return function () {
func1();
func2();
return value;
}();
}