节点模块中的Javascript性能

时间:2014-06-26 19:58:51

标签: 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];
    // 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。)这(第二种选择)是否有任何性能影响? (我的猜测当然不是,或者至少相对可以忽略不计)?

1 个答案:

答案 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)包装另一个函数的函数会增加一个可忽略的开销,但如果它没有添加任何值就应该避免。