有效地声明JavaScript变量

时间:2011-09-30 16:02:02

标签: javascript ajax optimization memory

我正在尝试优化小型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>

使用全球申报方案是否有显着的效率优势?

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

你可以将它包围起来以保持整洁;

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);