如果我理解正确,你不能这样做。
调试器(无论如何都是 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
。
所以不,没有伏都教返回声明。