Javascript删除机制

时间:2012-11-18 11:46:44

标签: javascript

  

可能重复:
  the delete operator in javascript

我有以下代码。我不明白为什么第二次删除失败。

另外,我注意到foo函数即使在我为foo分配了其他内容之后仍然存在。

有没有办法参考这个功能?
(假设我希望bar2=foo()的行为与bar分配相同。

> function foo(){var bar=0; return function(){return bar++;}}
undefined
> bar = foo()
function () {return bar++;}
> bar()
0
> bar()
1
> delete bar
true
> foo = foo()
function () {return bar++;}
> foo()
0
> foo()
1
> delete foo
false

由于

1 个答案:

答案 0 :(得分:7)

delete仅适用于可删除属性。声明的函数如下:

function f(){
}

不可删除。

尝试将此语法用于原始函数声明:

foo = function (){var bar=0; return function(){return bar++;}}

请在此处查看:http://jsfiddle.net/Sxnaw/

您可以阅读本文,深入了解可删除和不可删除的属性:http://perfectionkills.com/understanding-delete/