JavaScript函数加载

JavaScript函数加载,javascript,memory,Javascript,Memory,我有一个相对较大的JS函数(在内存使用和代码大小方面)(在IE/FF中运行),我只是偶尔使用(比如,每天几次)。我想当我处理完它后,可以通过清空它的函数(使用“function object”的变量名)来摆脱它 我还不清楚该如何取回它,也许过一段时间我还想再做一次。如何像“script”标记那样从URL动态加载JS 这条推理路线有意义吗?有点老套,但有两种方法: 使用DOM方法将脚本标记插入页面中,插入到包含该函数的文件中。您可能需要添加一个查询字符串,以便它认为这是一个新的javascript

我有一个相对较大的JS函数(在内存使用和代码大小方面)(在IE/FF中运行),我只是偶尔使用(比如,每天几次)。我想当我处理完它后,可以通过清空它的函数(使用“function object”的变量名)来摆脱它

我还不清楚该如何取回它,也许过一段时间我还想再做一次。如何像“script”标记那样从URL动态加载JS


这条推理路线有意义吗?

有点老套,但有两种方法:

使用DOM方法将脚本标记插入页面中,插入到包含该函数的文件中。您可能需要添加一个查询字符串,以便它认为这是一个新的javascript文件(如function.js?(随机数))


使用AJAX下载带有函数和eval()的文件;实现这一点的唯一真正方法是使用JavaScript动态地在文档中插入脚本元素,并链接到包含函数的脚本文件,从而加载脚本。一个警告:您必须确保文件名以查询字符串的形式附加了时间,否则缓存不友好的浏览器(如Internet Explorer)将不会再次重新加载脚本。

正如其他人所说,最好的办法是继续操作,在页面中插入带有某种查询参数的新脚本标记,以避免缓存问题。如果您使用的是JS库,那么这种技术实际上被称为“JSONP”;jQuery尤其有一个很好的方法来实现这一点,它为您提供了一种附加回调函数等的简单方法。如果编写自己的本机版本,则需要查看新脚本节点的readystate,以了解它实际加载的时间

这就是说,有一件事我很好奇——如果我错了,请纠正我——为什么不使用“delete”关键字终止函数,而不是将其置零?类似于

function myFunction() { return; }
然后

delete myFunction;

至少从我的角度来看,这似乎是一种更有效的清理方式。

为了对所有美好事物的热爱,不要对它进行评估。如果脚本意外地出现404,并返回一个包含一些JavaScript的错误页面,该怎么办?如果您使用该路径,可能会出现大量错误和令人讨厌的XSS漏洞……您是否进行过任何分析?您是否绝对确定您的函数确实占用了大量内存,或者您可能正在尝试解决一个非问题?delete My函数将保持函数的完整性。尝试删除它返回false,这意味着不能以这种方式删除函数对象。