It seems in JavaScript you can’t delete function arguments but you 
can delete global variables from a function.
Why this behavior?
var y = 1;
(function (x) { return delete y; })(1); // true
(function (x) { return delete x; })(1); // false
It seems in JavaScript you can’t delete function arguments but you 
can delete global variables from a function.
Why this behavior?
var y = 1;
(function (x) { return delete y; })(1); // true
(function (x) { return delete x; })(1); // false
 
    
     
    
    Actually, neither should return true, and indeed they don't in Firefox or Chrome (untested in other browsers). I imagine you tested this with Firebug or another browser console, which changes things due to the console using eval(). delete only deletes properties of an object and cannot normally delete a variable declared using var, whatever the scope.
Here's an excellent article by Kangax on the subject: http://perfectionkills.com/understanding-delete/
 
    
    Edit: Both return false in normal use (i.e. not within the Firebug or browser console, which use eval()). See Tim Down’s answer (it should be the accepted one).
 
    
    