【发布时间】:2011-03-04 13:31:38
【问题描述】:
假设我有以下情况:
var namespace = {};
(function($)
{
$.extend(namespace,
{
test1: function(someArray, someObj)
{
for(var i= 0, ii= someArray.length;i<ii;i++)
{
var text = someObj[someArray[i]];
// do something with text
}
},
test2: function(someArray, someObj,i,ii,text)
/*
see that the i,ii,text are unused parameters,
that will be used instead of variables
*/
{
for(i= 0, ii= someArray.length;i<ii;i++)
{
text = someObj[someArray[i]];
// do something with text
}
},
});
})(jQuery);
现在,test1 和 test2 的结果是一样的......但是性能,内存使用情况如何...... 以上述两种方式声明 i,ii, 测试变量有什么区别吗?
我认为例如 test2 可能更有效,因为变量在本地函数范围内,所以在函数退出后,执行上下文被破坏,释放用于参数的资源......变量将不分配给全局对象“窗口”。
那么什么方法表现最好呢?为什么?
[编辑]
感谢大家的回答!
如果代码有可读性问题没有问题...我现在只对性能/内存使用感兴趣。
【问题讨论】:
-
没有你关心的性能差异。
标签: javascript performance variables scope declaration