ProgrammerAtWork ProgrammerAtWork - 9 days ago 4
Javascript Question

Why can't I delete javascript values declared with var?


x = "Hello";
delete x; // returns true, x is removed

var y = "Hello";
delete y; // returns false, y is not removed

I'm not interested in How this happens, I want to know why the language has this feature.


Strictly speaking the first x is not a variable but a property of the global object. In browsers it's usually window (so x = "Hello" is equal to window.x = "Hello"). You can't use delete to remove variables but you can use it to remove object properties, and that's what it does in the first case.