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
  • 37,948
  • 19
  • 131
  • 194
  • 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
  • 57,289
  • 29
  • 176
  • 237
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
  • 296
  • 4
  • 14