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
var
ただし、行から削除するbaz = 99
と、baz変数はグローバルになります(これは私にとって完全に理にかなっています)。
...
console.log(e("baz = 99;")); // 99
console.log(e("baz")); // 99
console.log(baz); // 99 (so baz is just a global)