Я попытался выполнить код построчно, используя eval, но столкнулся с проблемами с областью действия, когда переменные и функции, объявленные в одной строке, были недоступны в последующих строках. Вот минимальный воспроизводимый пример проблемы:
Код: Выделить всё
let codeString = `
function test(param){
return param;
}
console.log(test("param"));
`;
let codeLines = codeString.split("\n"); // Split code into lines
function execute() {
for (let line of codeLines) {
if (line.trim()) {
try {
eval(line); // Execute each line independently
} catch (error) {
console.error("Error executing line:", line, error);
}
}
}
}
execute();
- Проблема области: Тест< Функция /code>, объявленная в первой строке, недоступна для оператора console.log во второй строке, поскольку eval выполняет каждую строку изолированно.
- Ожидаемое поведение: Я хочу, чтобы каждая строка выполнялась определенным образом который сохраняет общий контекст выполнения (как в реальной среде выполнения JavaScript).
Я специально ищу:
- < li>Способ сохранения объявлений переменных/функций в разных строках.
- Метод чтобы включить низкоуровневый контроль для реализации функций отладки, таких как пошаговое выполнение и точки останова.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ving-scope
Мобильная версия