我有以下代码。我不明白为什么第二次删除失败。
另外,我注意到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
由于
答案 0 :(得分:7)
delete
仅适用于可删除属性。声明的函数如下:
function f(){
}
不可删除。
尝试将此语法用于原始函数声明:
foo = function (){var bar=0; return function(){return bar++;}}
请在此处查看:http://jsfiddle.net/Sxnaw/
您可以阅读本文,深入了解可删除和不可删除的属性:http://perfectionkills.com/understanding-delete/