У меня есть вызов Eval() в глобальном контексте с таким кодом:Странное поведение eval() в глобальном контексте и в контексте функции. Функция IE9 и IE10
eval((new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile("/BaseScripts/sft.js", 1).ReadAll(), );
После этого все локальные переменные, функции, объекты, которые в «sft.js» скрипт файл будет добавлен в мой глобальный контекст. Но если же вызов Eval делать в локальной функции:
function run_eval(path) {
eval((new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(path, 1).ReadAll(), );
}
run_eval("/BaseScripts/sft.js");
локальные переменные, функции, объекты, которые в «sft.js» Файл сценария не будет добавлен в мой глобальный контекст. Зачем ? Согласно документации оба вызова: , это, установленное для глобального объекта. Почему только первый вызов добавляет переменные из файла сценария «sft.js» в глобальный объект? Не спасает ситуацию, и явно вызвать из run_eval()
в глобальном контексте:
run_eval.call(this, "/BaseScripts/sft.js");
//or
run_eval.call(RuntimeObject(), "/BaseScripts/sft.js");
Оба вызовы фас по результату к run_eval("/BaseScripts/sft.js");
. Любые комментарии приветствуются?
Спасибо. Вы правы, все в контексте. – 23W