javascript中删除运算符的行为

时间:2011-08-10 10:11:03

标签: javascript

似乎在JavaScript中你不能delete函数参数而是你 可以从函数中delete个全局变量。

为什么会出现这种情况?

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

(function (x) { return delete x; })(1); // false

2 个答案:

答案 0 :(得分:5)

实际上,它们都不应该返回true,实际上它们不会在Firefox或Chrome中(在其他浏览器中未经测试)。我想你是用Firebug或其他浏览器控制台测试的,changes things due to the console using eval()delete只删除对象的属性,并且通常不能删除使用var声明的变量,无论范围如何。

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

答案 1 :(得分:4)

编辑:正常使用时都返回false(即不在使用eval()的Firebug或浏览器控制台内)。请参阅Tim Down’s answer(应该是可接受的)。