есть ли способ, которым я могу выполнить eval() в определенной области (но НЕ глобально)?
например, следующий код не работает (a undefined во втором выражении), поскольку они находятся в разных областях:
eval(var a = 1);
eval(alert(a));
Если возможно, я хотел бы создать область действия "на лету". например (синтаксис определенно неверен, но просто для иллюстрации идеи)
var scope1;
var scope2;
with scope1{
eval(var a = 1); eval(alert(a)); // this will alert 1
}
with scope2{
eval(var a = 1); eval(a++); eval(alert(a)); // this will alert 2
}
with scope1{
eval(a += 2); eval(alert(a)); // this will alert 3 because a is already defined in scope1
}
Любая идея о том, как добиться чего-то подобного? Спасибо!