私の理解が正しければ、あなたはこれを行うことはできません。
デバッガー (少なくとも Chrome のデバッガー) は、それ自体が JavaScript ベースです。
これらの人はeval()
(最終的に)挿入されたコードを実行するために使用します。Chromeインスペクターをトロールすると、何かを評価しようとすると、デバッガーコードが最終的にこれを呼び出すようです(私は思います):
function (evalFunction, object, expression, isEvalOnCallFrame, injectCommandLineAPI)
{
// Only install command line api object for the time of evaluation.
// Surround the expression in with statements to inject our command line API so that
// the window object properties still take more precedent than our API functions.
try {
if (injectCommandLineAPI && inspectedWindow.console) {
inspectedWindow.console._commandLineAPI = new CommandLineAPI(this._commandLineAPIImpl, isEvalOnCallFrame ? object : null);
expression = "with ((window && window.console && window.console._commandLineAPI) || {}) {\n" + expression + "\n}";
}
return evalFunction.call(object, expression);
} finally {
if (injectCommandLineAPI && inspectedWindow.console)
delete inspectedWindow.console._commandLineAPI;
}
}
evalFunction
の単なるエイリアスですeval()
。
問題は、ハードコードであっても、eval で return ステートメントを使用できないことです。それは常にあなたを与えますSyntaxError: Illegal return statement
。
いいえ、ブードゥーリターンステートメントはありません。