javascript - 是否可以在 JavaScript 中创建一个提供持久本地范围的控制台?

标签 javascript browser

我想在 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/

相关文章:

javascript - 如何获取最新的 Chrome(版本 55)以允许混合内容?

javascript - Buildfire:音频播放器服务未创建timeUpdate事件

Javascript - "print"通过绳索将鼠标放在文档上

javascript - 为什么在使用 JavaScript 单击按钮时需要这行代码?

javascript - 如何从 Firefox 扩展中的地址栏获取文本

javascript - 如何使 Angular Material 对话框在 IE10 中工作

javascript - 如何从谷歌地图中的集群中分离出一个特殊标记?

javascript - 如何将浏览器事件捕获到视频文件中

html - 隐藏类型为 ='hidden' 的输入字段与使用显示为 :none 的类

javascript - 当我的 RegEx 被执行并且与输入不匹配时,浏览器选项卡卡住