通过从DOM中删除它的代码来清理javascript变量范围
希望这个基于jquery的简单代码有助于解释这个问题。
HTML:
$('#remover').click(function(){ $('#block').empty(); }) $('#test').click(function(){ alert(remove1); // still displays the varibale }) var remove1 = 'asasdsds'; var remove2 = 'asasdsds'; var remove3 = 'assdsdsdas'; var blabla = 'blablabl'; Remove ALL Test // it will still displays the variable.
我需要通过删除块内容来清除全局范围内的所有变量。 块内容是动态的,可以包含任何javascript代码。
谢谢阅读。
这当然不会像你期望的那样工作。 JavaScript堆没有耦合到DOM – 一旦脚本执行了,并且变异了堆,你就不能通过删除它们的相关源代码来“取消”它们。
全局变量通常在窗口对象上设置,因此如果您知道名称,则可以从那里删除它们。 如果你想要撤消块内任何JavaScript的效果,那你几乎没有运气。
Javascript不能那样工作! 一旦解析了一个脚本块,从DOM中删除它就不会做任何事情……我唯一能想到的就是这样一个非常难看的黑客 :
然后你的删除function看起来像: