我一直在读 Cody Lindley 的这本书“Javascript Enlightenment”。在第 82 页上,他指出:“显式(例如 window.alert() 与 alert())在性能方面的成本要高一些。如果仅依赖范围链并避免显式引用头对象,速度会更快,即使你知道你想要的属性包含在全局范围内。”
我很好奇这是为什么。我认为情况恰恰相反,因为 Javascript 解释器可以跳过检查范围并直接找到它。我只是看不出不指定某物的确切地址有什么好处。
我的意思是,我知道每次我想使用包含在全局范围内的东西时我都不想键入 window.whatever() 并且我认为不指定更快是很棒的。只是不确定为什么。
只是那些“想知道”的事情之一。
最佳答案
解释器总是必须使用作用域链。当您编写 window.alert()
时,它必须沿着作用域链向上寻找 window
的值——您可能有一个名为 的局部变量window
遮蔽了头部的那个,所以它不能假设这是全局对象。
如果 JavaScript 有一种语法来明确表示顶级上下文,那会更快。但事实并非如此。
关于javascript - 为什么单独依赖作用域链并避免在 Javascript 中显式引用 head 对象是有益的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022647/