我在一个看起来像这样的模块中有代码:
var MyModule = module.exports;
MyModule.some_function = function(arg) {
// Do some code here
// Do some logging using the function name
// var function_name = calleeArgs.callee.toString().match(/function ([^\(]+)/)[1];
// BAD, this method doesnt have a name
};
上面的代码不起作用,因为该函数没有名称。 作为替代方案,我可以执行以下操作,在这种情况下,日志将包含方法名称:
function _some_function(arg) {
// Do some code here
// Do some logging using the function name - BAD, this method doesnt have a name
// var function_name = calleeArgs.callee.toString().match(/function ([^\(]+)/)[1];
// GOO, this method doesnt have a name
}
MyModule.some_function = function(arg) {
_some_function(arg);
};
所以我的问题是:
1。)这种写作方式是否有意义 - 据我所知_some_function()是本模块的本地方式,因此就全局范围/访问而言,不存在任何负面影响
2。)这(第二种选择)是否有任何性能影响? (我的猜测当然不是,或者至少相对可以忽略不计)?
答案 0 :(得分:0)
1)我发现代码风格非常混乱和臃肿。我认为以下是最干净的方法:
function some_function(arg) {
// Do some code here
// Do some logging using the function name
}
// Put exports at the end
exports.some_function = some_function;
2)包装另一个函数的函数会增加一个可忽略的开销,但如果它没有添加任何值就应该避免。