有效地声明JavaScript变量

Declaring JavaScript Variables Efficiently

本文关键字:变量 JavaScript 声明 有效地      更新时间:2023-09-26

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

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

应该在局部声明,因为任何全局声明都会花费额外的时间在局部作用域中查找变量,然后再在全局作用域中查找,这使得全局声明实际上更慢。另外,变量声明可能不需要搜索变量名,它可以简单地尝试创建一个新变量。

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

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

您可以将其括起来,以保持整洁;

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