高效地声明JavaScript变量

高效地声明JavaScript变量,javascript,ajax,optimization,memory,Javascript,Ajax,Optimization,Memory,我正在尝试优化一个小型web应用程序对JavaScript变量的使用。我有大约五个函数,每个函数生成一个Ajax调用,并反复使用查询字符串。我应该在每个函数内部声明查询变量,还是全局声明会提高效率?我所说的一个非常简单的例子是: 本地声明 <script type="text/javascript"> function queryOne() { var queryString = "query arguments"; } function

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

函数queryOne(){
var queryString=“查询参数”;
}
函数queryTwo(){
var queryString=“查询参数”;
}
全球宣言

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

var查询串;
函数queryOne(){
queryString=“查询参数”;
}
函数queryTwo(){
queryString=“查询参数”;
}

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

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

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


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

为了整洁起见,可以将其括起来

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

我不认为会有明显的效率优势,特别是因为大部分时间都花在AJAX请求上,但您可以随时在上设置一个基准来发现这一点。