gpt4 book ai didi

javascript - 跨模块功能范围?它在哪里看

转载 作者:行者123 更新时间:2023-12-02 17:37:16 25 4
gpt4 key购买 nike

鉴于以下情况:

<强> include.js

module.exports = function() {

...

return {
func: function(val) {
return Function('return ' + val + ';');
}
}
}()

<强> running.js

var outer = function() {
var include = require('./include.js');

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

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

...我该把 function eq(x, y){ return x === y; } 放在哪里这样这会起作用吗?我目前收到 eval at <anonymous>在调用该函数的行上;在本例中为 x(5,5)。

它不喜欢 eq位于include.js或者当它位于running.js时~ 我知道这是从我的项目中获取的示例代码,并且非常模糊......但是,如果可能的话,该函数会去哪里?

或者

...定义一个函数对象,其中键是函数的名称会更好吗?

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

最佳答案

通过new Function创建的函数的父作用域是全局作用域,而不是任何本地或模块作用域。所以

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

应该可以。

...would it be better to define an object of functions where the keys are the name of the function?

绝对是的。

关于javascript - 跨模块功能范围?它在哪里看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22513592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com