Javascript内存关注和删除未使用的变量

时间:2014-07-22 12:00:52

标签: javascript

假设我有一个代码,许多其他代码使用许多变量和赋值。如果在脚本的最后我将所有未使用的变量设置为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是否有助于执行内存和性能?

2 个答案:

答案 0 :(得分:0)

将变量设置为null只会使它们具有null值。

JavaScript有一个垃圾收集器,这意味着它将释放未被引用的变量(您可能希望阅读this article)。

在您的情况下,虽然您在tmp块中声明了email_partsif,但它们实际上会在DoSomething函数执行结束时被释放,因为那些声明被移到范围的顶部(参见variable hoisting)。

另外,正如@Andy所说,tmp=null; email_parts = null; i = 0;没有效果,因为你将return emails_classes;置于其上方。

答案 1 :(得分:0)

不,不是

作为一名程序员,你不应该考虑像这样的微调。让编译器/垃圾收集器处理它。

作为程序员,我们的主要关注点应该是“易于理解”的代码“应该做的事情”。

编写完代码后。如果出现问题,您可以查看性能。如果是这样,测试,测试,测试和测试