4

我一直在阅读 Cody Lindley 的这本书“Javascript Enlightenment”。在第 82 页上,他指出:“显式(例如 window.alert() 与 alert())在性能方面会花费更多。如果您仅依赖作用域链并避免显式引用 head 对象,则速度会更快,即使你知道你想要的属性包含在全局范围内。”

我有点好奇这是为什么。我认为情况正好相反,因为 Javascript 解释器可以跳过检查范围并直接找到它。我只是不明白不指定某物的确切地址有什么好处。

我的意思是,我知道每次我想使用包含在全局范围内的东西时,我都不想输入 window.whatever() ,而且我认为不指定会更快,这很好。只是不知道为什么。

只是那些“想知道”的事情之一。

4

1 回答 1

6

解释器总是必须使用作用域链。当你编写window.alert()它时,它必须沿着作用域链向上查找window- 你可能有一个名为的局部变量window,它会遮蔽头部的那个,所以它不能假设这是全局对象。

如果 JavaScript 有明确表示顶级上下文的语法,那会更快。但事实并非如此。

于 2012-10-23T02:27:39.163 回答