【问题标题】:Declaring JavaScript Variables Efficiently高效地声明 JavaScript 变量
【发布时间】:2011-11-28 14:35:48
【问题描述】:

我正在尝试优化小型 Web 应用程序对 JavaScript 变量的使用。我有大约五个函数,每个函数都产生一个 Ajax 调用,并反复使用查询字符串。我应该在每个函数中声明查询变量,还是全局声明它会提高效率?我正在谈论的一个非常简单的例子是:

本地声明

<script type="text/javascript">

    function queryOne() {
        var queryString = "query arguments";
    }

    function queryTwo() {
        var queryString = "query arguments";
    }
</script>

全球宣言

<script type="text/javascript">
    var queryString;

    function queryOne() {
        queryString = "query arguments";
    }

    function queryTwo() {
        queryString = "query arguments";
    }
</script>

使用全局声明方案是否有显着的效率优势?

【问题讨论】:

  • 我认为不会有明显的效率优势,尤其是因为大部分时间都花在了 AJAX 请求上,但您始终可以在 jsperf 上设置基准以找出答案.

标签: javascript ajax optimization memory


【解决方案1】:

应该在本地声明,因为任何全局声明都需要额外的时间在局部范围内查找变量,然后在全局范围内查找,从而使全局声明实际上更慢。另外,变量声明可能不需要搜索变量名,它可以简单地尝试创建一个新变量。

此外,如果将来添加代码,全局声明变量可能会导致它被其他代码覆盖或发生冲突。

实际上,如果查询字符串只分配给一次,您可以使用模块级变量节省一点时间。但是,如果每次调用函数时都重新分配查询变量,那么将查询变量设置为每个函数的本地变量肯定会节省时间。

【讨论】:

    【解决方案2】:

    为了整洁,你可以把它围起来;

    var MyApp = {
        queryString: null,
        queryOne: function() {
            print( this.queryString );
        },
        queryTwo: function() {
            print( this.queryString );
        }
    }
    .
    MyApp.queryString = "foo=boob";
    .
    a = MyApp.queryOne(123);
    b = MyApp.queryTwo(456);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多