假设我有一个代码,许多其他代码使用许多变量和赋值。如果在脚本的最后我将所有未使用的变量设置为null,它是否有助于内存和性能?
例如,以下代码:
function DoSomething ()
{
/**** do something ...... */
if(emailValidator.test(allEmails) == 1) // #id.class.class.class
{
var email_parts = [];
var i = 0;
var tmp;
while(tmp = emailValidator.exec(allEmails))
{
email_parts[i] = tmp;
i++;
}
var wrapped_emails= "";
for(w=0; w < emails_parts.length; w++)
{
this_class = emails_parts[w][1];
emails_classes += " " + this_email.replace(/^\./, "") + " ";
}
emails_classes = emails_classes.trim();
return emails_classes;
tmp=null; email_parts = null; i = 0; // DOES THIS LINE HELPS THE MEMORY AND PERFORMANCE??????
}
/** the rest ...... */
}// end of the function
如果你看到,在条件结束时我已经将所有变量设置为null,除了要返回的变量。
现在,我的问题是,将变量排除在null是否有助于执行内存和性能?
答案 0 :(得分:0)
将变量设置为null
只会使它们具有null
值。
JavaScript有一个垃圾收集器,这意味着它将释放未被引用的变量(您可能希望阅读this article)。
在您的情况下,虽然您在tmp
块中声明了email_parts
和if
,但它们实际上会在DoSomething
函数执行结束时被释放,因为那些声明被移到范围的顶部(参见variable hoisting)。
另外,正如@Andy所说,tmp=null; email_parts = null; i = 0;
没有效果,因为你将return emails_classes;
置于其上方。
答案 1 :(得分:0)
作为一名程序员,你不应该考虑像这样的微调。让编译器/垃圾收集器处理它。
作为程序员,我们的主要关注点应该是“易于理解”的代码“应该做的事情”。
编写完代码后。如果出现问题,您可以查看性能。如果是这样,测试,测试,测试和测试