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
应该很棒,因为这些函数是值和数据集之间的“验证器”: