var g = newGlobal({newCompartment: true}); var dbg = new Debugger(g);
g.eval(` function f() { // |this| in arrow-functions refers to the |this| binding in outer functions. // So when |frame.eval("this")| is executed, the outer |this| binding should // be returned, unless it has been optimised out.
(() => {})();
// Ensure a |this| binding is created for |f|. returnthis;
}
`);
var errors = [];
function enterFrame(frame) { // Disable the handler so we don't call it recursively through |frame.eval|.
dbg.onEnterFrame = undefined;
// Store the error when resolving |this| was unsuccessful. var r = frame.eval("this"); if (r.throw) {
errors.push(r.throw);
}
// Re-enable the handler.
dbg.onEnterFrame = enterFrame;
};
dbg.onEnterFrame = enterFrame;
g.f();
assertEq(errors.length, 1);
assertEq(errors[0].unsafeDereference().toString(), "Error: variable 'this' has been optimized out");
Messung V0.5
¤ Dauer der Verarbeitung: 0.20 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.