说我有javascript:
/*getAttribute is mootools method for retrieving a named attribute*/
var companyNumber = button.getAttribute('data-company-number');
var payPoint = button.getAttribute('data-pay-point');
window.location = '/Payslip/ListPayslips/?companyNumber=' + companyNumber + '&payPoint=' + payPoint
delete payPoint;//is this necessary?
delete companyNumber;//is this necessary?
删除行是否必要?他们甚至会被召唤?
答案 0 :(得分:3)
没有必要,在重定向之后,所有变量和实例都将被删除。
答案 1 :(得分:1)
是的,如果重定向加载到当前框架/文档中,则会丢失所有变量。处理此问题的最佳方法是创建几个div,并且需要在另一个div中加载任何重定向。例如,你可以有一个标题和主div。您的JS现在可以驻留在页面中,任何重定向都应该加载到主div中。这样你就可以保持状态了。
另一种方法是使用HTML5本地/会话存储。
编辑: 关于删除的第二个问题。不,删除是没有必要的。其他人回应了链接和原因。
答案 2 :(得分:1)
回答第一个问题,是的。卸载时一切都是垃圾(在刷新,重定向或关闭时卸载)。
要回答第二个问题,重定向后不会删除删除。 JS引擎将停在那里并解除卸载等。
关于内存管理和显式变量删除的讨论,这里有一些注意事项:
在开发在浏览器中长时间打开的大型Web应用程序时,良好的内存管理可能变得非常重要,尤其是当目标客户端浏览器可能较旧或在较慢的计算机或移动设备上时。
在这些情况下,如果您声明变量来保存临时信息,特别是大型对象,您可以选择删除它们以释放它们以进行垃圾回收。我认为,如果没有必要,你应该避免使用新的声明,并尽可能重复使用对象 - 但可能不以牺牲可读性为代价;)
要添加到'Corey Ogburn的观点,删除本身并不释放内存,而是将变量与其值断开连接。这就是释放垃圾收集的变量。