javascript中删除操作符的行为

Behavior of delete operator in javascript

本文关键字:操作符 删除 javascript      更新时间:2023-09-26

似乎在JavaScript中你不能delete函数参数,但你

可以从函数中delete全局变量。

为什么会有这种行为?

var y = 1;
(function (x) { return delete y; })(1); // true
(function (x) { return delete x; })(1); // false

实际上,两者都不应该返回true,实际上它们在Firefox或Chrome中没有(在其他浏览器中未经测试)。我想您使用Firebug或其他浏览器控制台进行了测试,由于使用eval()的控制台,这会更改内容。delete只删除对象的属性,通常不能删除使用var声明的变量,无论其作用域是什么。

这是Kangax关于这个主题的一篇优秀文章:http://perfectionkills.com/understanding-delete/

Edit:两者都返回正常使用的false(即不在Firebug或浏览器控制台中使用eval())。参见Tim Down的答案(这应该是公认的答案)。