1

f別の(匿名の)関数を指定するjavascript関数が必要で、グローバルスコープ(または少なくとも現在のスコープ)でその名前にg名前nが割り当てられます。g次のように使用できるはずです。

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 strict モードに準拠する必要がある場合は、次のものが必要です。

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

グローバル オブジェクトへの参照はクロージャに保持されます。しかし、なぜそのような機能が必要なのかを理解するのは困難です。

于 2011-06-27T05:38:55.943 に答える