How can I delete a function
i.e
test=true; delete test; => true function test() {..} delete test() => false Delete usually works for variables but it doesn't work for functions.
The JavaScript delete operator removes a property from an object; if no more references to the same property are held, it is eventually released automatically.
Use the DELETE function to erase the data contents of a specified field, value, or subvalue and its corresponding delimiter from a dynamic array. The DELETE function returns the contents of the dynamic array with the specified data removed without changing the actual value of the dynamic array. dynamic.
The delete operator in JavaScript is used to delete an object's property. If it is used to delete an object property that already exists, it returns true and removes the property from the object.
The only way to fully remove the properties of an object in JavaScript is by using delete operator. If the property which you're trying to delete doesn't exist, delete won't have any effect and can return true.
delete the result of a function declaration.This is a part of the language specification.
If you check out the description of the delete operator in JavaScript:
If desc.[[Configurable]] is true, then
Remove the own property with name P from O.
Return true.
If you go to the browser and run the following in the console:
>function f(){} >Object.getOwnPropertyDescriptor(window,"f") You would get:
Object {value: function, writable: true, enumerable: true, configurable: false}
You can however, assign the result to another value that is not a function, assuming that is your last reference to that function, garbage collection will occur and it will get de-allocated.
For all purposes other than getOwnPropertyNames hasOwnProperty and such, something like f = undefined should work. For those cases, you can use a functionExpression instead and assign that to a variable instead. However, for those purposes like hasOwnProperty it will fail, try it in the console!
function f(){} f = undefined; window.hasOwnProperty("f");//true When your modern browser sees a delete statement, that forces it to fall to hash map mode on objects, so delete can be very slow (perf).
In a managed language with a garbage collector, using delete might prove problematic. You don't have to handle your memory, the language does that for you.
In the case you do want to use objects like a map, that's a valid use case and it's on the way :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With