我想在 JavaScript 中为 Web 应用程序创建一个控制台(想想 chrome 的开发控制台),它具有持久范围。所以你可以说,设置一个变量,然后稍后在控制台中访问该变量。有没有一种简单的方法可以在 JavaScript 中执行此操作?
示例 session :
var x = SomeCustomFunction()
>> "the result"
x.slice(4)
>> "result"
最佳答案
您可以使用间接调用 eval
。
直接调用将不起作用,因为它们会使用调用执行上下文,这可能会在创建变量和尝试访问变量之间发生变化。
相反,对 eval
的间接调用将使用全局执行上下文,因此变量将持续存在。
一些间接调用 eval
的方法是使用 var myEval = eval; myEval(...)
或 window.eval(...)
。
var input = document.getElementById('input'),
data = document.getElementById('data');
document.getElementById('form').onsubmit = function() {
var code = input.value,
result = window.eval(code);
data.appendChild(document.createElement('dt')).appendChild(document.createTextNode(code));
data.appendChild(document.createElement('dd')).appendChild(document.createTextNode(result));
return false;
};
<form id="form">
<dl id="data"></dl>
<input id="input" />
<input type="submit" />
</form>
例如,在上面的代码片段中,输入 var x = 5
。然后输入x
,您将收到5
。
关于javascript - 是否可以在 JavaScript 中创建一个提供持久本地范围的控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31899161/