gpt4 book ai didi

Javascript - 在函数的外部范围内访问变量有多昂贵?

转载 作者:行者123 更新时间:2023-12-02 05:17:58 24 4
gpt4 key购买 nike

我不太熟悉 JavaScript 的作用域解析机制。我想知道,JavaScript 访问作用域链中“向上”一个或两个作用域的变量的代价是多少?假设我有一个名为 scope3 的函数,它位于一个名为 scope2 的函数内,而该函数位于一个名为 scope1 的函数内。如果我尝试从 scope3 访问 scope1 中定义的变量,JavaScript 是否必须加载所有三个范围中的所有变量才能找到它?如果是这样,这种操作的代价取决于每个作用域中定义了多少变量,对吗?

产生疑问是因为我有多个函数使用相同的元素或值。需要调用函数才能计算的值。所以,我想知道检索元素并重新计算每个函数中的值是否更有效,以避免攀登范围链,或者最好将函数包装在外部范围内,检索元素/计算这些值只有一次,然后只需从内部函数访问它们。当然,这是我的结构的简化示例。实际上,我有多个范围级别。

对于这种情况,最佳做法是什么?

谢谢。

最佳答案

我创建了一个小的jsperf测试有想法。

  • v8 (chromium) 在没有闭包的情况下速度非常快,但在有闭包的情况下会慢很多。它必须达到多“远”才能获得变量无关紧要。
  • Spidermonkey (firefox) 较慢(chrome 最大速度的 50%),但速度稳定。

因此,作为第一个近似值,您可以认为闭包更慢。嵌套层数对速度没有影响。

关于Javascript - 在函数的外部范围内访问变量有多昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20142057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com