在 JavaScript 中,一个括号是什么意思

what does a single couple of brackets mean in JavaScript

本文关键字:一个 是什么 意思 JavaScript      更新时间:2023-09-26

我正在阅读高性能JavaScript。在这本书中,作者给出了以下代码:

function execute(code) {
  eval(code);
  function subroutine(){
    return window;
  }
  var w = subroutine();
  //what value is w?
};

他使用以下语句运行该函数:

execute("var window = {};")

他说:

在这种情况下,eval() 在 execute() 中创建一个局部窗口变量,因此 w 最终等于本地窗口而不是全局窗口。没有 在执行代码之前知道是否是这种情况的方法,这 表示无法预先确定窗口标识符的值。

我不知道这里的裸括号(code);是什么意思。我尝试了他的代码,我得到了w作为全局窗口实例。不是"创建的本地窗口"(空对象)。我想知道发生了什么...

发生的情况是代码示例中的eval()执行该字符串中的代码。该代码创建一个名为 window 的局部变量,并为其分配一个空对象。

关键是,对于该特定字符串,subroutine() 中的window引用该变量,但如果它是一个完全不同的字符串,没有提及window,则子例程中的window可能最终引用全局window对象。

关键是,就

拥有可预测的代码而言,这完全是疯狂的,无论是对于编写代码的人,还是对于试图优化它的JS引擎,因此您应该避免这样做。

{}是一个对象文字,创建一个空白对象。

但是,他的代码是完全错误的。你不能像这样执行任意代码 - 你需要使用eval().因此,没有本地window对象。他只是忽略了一根绳子,并返回了真正的窗口。

相关文章: