0

May I know why it prompts 1 rather than undefined for the following javascript code?

function a(){
    var y=1;
    delete y;
    alert(y);
}

a();
Felipe Oriani
  • 36,796
  • 18
  • 129
  • 183
  • 3
    Have you read the documentation for delete? It operates on a property of an object: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete – George Stocker Jan 19 '16 at 01:23
  • Of course it doesn't. `delete` is for deleting properties: http://perfectionkills.com/understanding-delete/ – Bergi Jan 19 '16 at 01:24
  • Duplicate of http://stackoverflow.com/questions/16963066/how-to-delete-a-variable – Andy Jan 19 '16 at 01:26

2 Answers2

2

delete operates on the property of an object; not on a non-object.

So, this would work:

var y = { val: 1};
delete y.val;
console.dir(y); 

outputs:

{}
George Stocker
  • 56,270
  • 29
  • 173
  • 234
1

From the MDN reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete

delete is only effective on an object's properties. It has no effect on variable or function names.

Solci
  • 274
  • 6
  • 9