我正在尝试优化小型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>
使用全球申报方案是否有显着的效率优势?
答案 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);