节点模块中的Javascript性能

节点模块中的Javascript性能,javascript,node.js,performance,Javascript,Node.js,Performance,我在一个模块中有如下代码: 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];

我在一个模块中有如下代码:

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.)这种编写方式有意义吗?据我所知,某些函数()是本模块的本地函数,因此就全局作用域/访问而言,不会有任何负面影响

2.)这(第二个选项)是否对性能有任何影响?(我的猜测当然是否定的,或者至少可以忽略不计)?

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) 包装另一个函数的函数会增加可忽略不计的开销,但如果它不增加任何值,则应避免这种情况。

您可以在JS中使用命名函数表达式。使用Node,你甚至不必担心那些东西会引起IE bug。不需要包装它-你可以使用以下任一种:
MyModule.some\u function=\u some\u function,在第一种情况下是MyModule.some_function=function some_function(…){}
。谢谢!显而易见的解决方案——不习惯Javascript语法……我同意这是不好的,尽管这是一个非JS世界所拥有的。学习这种语言的最佳实践需要在思维过程中进行一个小小的转换:-)