Schrittweise Ausführung: Code Zeile für Zeile ausführen.
Bewahrung des Bereichs: Beibehalten Der Ausführungskontext (Variablen, Funktionen usw.) über Zeilen hinweg, sodass zuvor deklarierte Variablen in nachfolgenden Zeilen zugänglich sind.
Debugger-Funktionen: Implementieren Sie Debugging-Funktionen wie das Ein- und Aussteigen in den Code und das Setzen von Haltepunkten.
Hier ist eine Beispiel für die Problem, auf das ich gestoßen bin:
Code: Select all
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();
Bereichsprobleme: Im obigen Beispiel ist die in der ersten Zeile deklarierte Testfunktion für die Anweisung console.log nicht zugänglich in der zweiten Zeile. Dies geschieht, weil eval jede Zeile isoliert ausführt.
Gewünschtes Verhalten: Ich möchte eine Möglichkeit haben, JavaScript-Code Zeile für Zeile auszuführen und dabei den gemeinsamen Ausführungskontext beizubehalten, wie er in einer typischen JavaScript-Laufzeit zu sehen ist.
Anforderungen:< /p>
Die Lösung muss mit ES5 kompatibel sein (keine modernen ES6+-Funktionen).
Sie sollte die Implementierung allgemeiner Debugging-Funktionen wie Stepping, Haltepunkte und Inspektion ermöglichen Bereich/Variablen.
Was ich versucht habe:
Eval verwenden: Funktioniert für einzelne Zeilen, behält aber den Bereich über Zeilen hinweg nicht bei.
Untersuchung von Alternativen wie dem Funktionskonstruktor : Bin auf ähnliche Bereichsprobleme gestoßen.
Ist es möglich, eine Debugger-Konsole in ES5 zu implementieren, die diese Anforderungen erfüllt? Wenn ja, welchen Ansatz würden Sie empfehlen?