Javascript 跨模块功能范围?它在哪里

Javascript 跨模块功能范围?它在哪里,javascript,node.js,Javascript,Node.js,鉴于以下情况: include.js module.exports = function() { ... return { func: function(val) { return Function('return ' + val + ';'); } } }() var outer = function() { var include = require('./include.js'); va

鉴于以下情况:

include.js

module.exports = function() {

    ...

    return {
        func: function(val) {
            return Function('return ' + val + ';');
        }
    }
}()
var outer = function() {
    var include = require('./include.js');

    var x = include.func('eq');

    console.log(x(5, 5));
}
outer()
running.js

module.exports = function() {

    ...

    return {
        func: function(val) {
            return Function('return ' + val + ';');
        }
    }
}()
var outer = function() {
    var include = require('./include.js');

    var x = include.func('eq');

    console.log(x(5, 5));
}
outer()
…我将把
函数eq(x,y){return x===y;}
放在哪里,这样就可以工作了?我目前在调用函数的线路上得到了一个
评估;在这种情况下为x(5,5)

它不喜欢当
eq
include.js
中时,或者当它在
运行.js
时。我知道这是一个示例代码,它取自我的项目,变得非常模糊……但是,如果可能的话,该函数会去哪里

…定义一个键为函数名的函数对象是否更好

defaultFuncs = {
    'eq': function(x, y){ return x === y; }
}

通过
新函数创建的函数的父范围是全局范围,而不是任何本地或模块范围。所以

global.eq = function(a,b) { return a==b };
function func(name) { return Function("return "+name+";"); }

var x = func("eq");
var equals = x();
equals(5, 5) // true
应该有用

…定义一个键为函数名的函数对象是否更好

defaultFuncs = {
    'eq': function(x, y){ return x === y; }
}

肯定是的。

几乎每当你发现自己在考虑新功能时,都会很安全地认为有更好的方法。是的,我不喜欢它;即使是内部工具。。。我认为defaultFuncs对象会工作得更好。您可能还对my感兴趣,您可以在my中编写
var equals=F(“=”);等于(5,5)
;那可能会让你省下一大笔钱嘿,谢谢!我决定使用functions对象,因为我不想把全局空间搞得乱七八糟
F.js
应该很棒,因为这些函数是值和数据集之间的“验证器”: