Как выполнить JavaScript построчно, сохраняя область видимости?Javascript

Форум по Javascript
Ответить
Anonymous
 Как выполнить JavaScript построчно, сохраняя область видимости?

Сообщение Anonymous »

Я создаю собственный отладчик JavaScript, который позволяет пользователям выполнять код построчно, поддерживать область действия по строкам и реализовывать такие функции отладчика, как вход в код и его обход, точки останова и т. д.
Я попытался выполнить код построчно, используя 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).
Как я могу выполнить JavaScript кодировать построчно, сохраняя при этом область действия и контекст между строками?
Я специально ищу:
  • < li>Способ сохранения объявлений переменных/функций в разных строках.
  • Метод чтобы включить низкоуровневый контроль для реализации функций отладки, таких как пошаговое выполнение и точки останова.
Я пробовал изучать альтернативы, такие как Конструктор функции, но столкнулся с аналогичными проблемами с областью действия. Будем очень признательны за любые предложения или идеи!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ving-scope
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»