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

B T*_*B T 6 javascript browser

我想用JavaScript创建一个控制台(想想chrome的开发控制台),用于Web应用程序,它具有持久的范围.所以你可以说,设置一个变量,然后在控制台中访问该变量.有一种简单的方法可以在JavaScript中执行此操作吗?

一个示例会话:

var x = SomeCustomFunction()
>> "the result"
x.slice(4)
>> "result"
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 3

您可以使用间接调用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;
};
Run Code Online (Sandbox Code Playgroud)
<form id="form">
  <dl id="data"></dl>
  <input id="input" />
  <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

例如,在上面的代码片段中,输入var x = 5。然后输入x,你就会收到5