Removing a <script> element just removes the script's *source code* from the DOM. It doesn't undo any actions that the script has already performed, such as defining functions or variables or creating other DOM elements. It doesn't change their availability for garbage collection at all.
In your example, the hello function will never be garbage collected, because the window object has a property named 'hello' that holds a reference to the function. As Ami mentioned you can null out that window.hello property or use the delete operator on it, or better, use the (function() { /* code here */ })(); wrapper to avoid setting global properties. -Mike On Wed, Jan 13, 2010 at 2:40 PM, Nathan Klatt <n8kl...@gmail.com> wrote: > On Wed, Jan 13, 2010 at 1:53 PM, nihal <nihal.c...@gmail.com> wrote: > > is there anyway to remove the newly added function from the dom? > > Wrap the code you want to be removeable in its own <script> element, > give it an id, then remove it just like any other element. As has been > discussed today, removing it doesn't mean *poof* it's gone, just that > it could be removed by the garbage collector, so you'll likely be able > to continue calling the function after it's been removed. See: > > http://jsbin.com/ixite/edit > > <script id="removeMe" type="text/javascript"> > function hello(msg) { alert(msg); } > </script> > > <script type="text/javascript"> > $().ready(function() { > hello("one"); > $("#removeMe").remove(); > hello("two"); > setTimeout("hello('three')", 2500); > }); > </script> > > The code gets removed from the DOM (verified using Firebug) but the > function still works 2.5 seconds later. > > Nathan >