1

我需要一个f给定另一个(匿名)函数的javascript函数,g并且一个名称ng在全局范围(或​​至少是当前范围)中分配给该名称。我应该可以像这样使用它:

f(function(){ /* code */ }, "foo");

foo(); // this call should now work!

这可能吗?我需要一个纯 JavaScript 解决方案,没有 DOM 材料或类似的东西。这不打算在任何浏览器中运行..

免责声明:我可能有也可能没有好的/有效的理由想要这样做。您无需向我讲授保持全局范围清洁等优点;)

4

2 回答 2

4

根据里德

function f(g, n) {
    this[n] = g;
}

或者更安全:

function f(g, n) {
    (function() { return this; })()[n] = g;
}
于 2011-06-27T04:56:25.257 回答
0

如果您需要符合 ES5 严格模式,那么您需要:

var addGlobalFunction = (function(global) {
    return function (fn, name) {
        global[name] = fn;
    };
})(this);

对全局对象的引用保存在闭包中。然而,很难理解为什么这样的功能可能是必要的。

于 2011-06-27T05:38:55.943 回答