動的にjavascript関数のスコープを拡張することはできますか?私は成功せず、次を試してみました:javascript関数のスコープを拡張する
function foo()
{
var bar = 12;
return function(x)
{
return eval(x);
}
}
var e = foo();
console.log(e("bar")); // 12
console.log(e("bar = 42;")); // 42
console.log(e("bar")); // 42
console.log(e("var baz = 99;")); // undefined
console.log(e("baz")); // ReferenceError: baz is not defined
私はラインbaz = 99
からvar
を削除しかし、その後バズ変数は(これは私には完璧な意味があります)グローバルになった場合:
...
console.log(e("baz = 99;")); // 99
console.log(e("baz")); // 99
console.log(baz); // 99 (so baz is just a global)
あなたはこれをしたいと思うなぜ、これは地獄のよう – Raynos
@Raynos汚れている:ふふふ...かもしれないが、私はそれは恐ろしいだとは思わない:私は楽しみのためにJavascriptをターゲットコンパイラを書くとしていますモジュールを実装したいのですが、関数スコープを使用することが可能かどうかは、モジュールを「オープン」にしておくことです(つまり、すべての名前を一度に定義してモジュールを封印する代わりに、 "その後) – 6502
代わりにオブジェクトを使うことを考えましたか?モジュールのコンテナとして関数スコープを使用することはできません – Raynos