3

可能重复:
javascript中的删除运算符

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

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

有没有办法引用函数?
(假设我希望 abar2=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

谢谢

4

1 回答 1

7

delete仅适用于可删除的属性。像这样声明的函数:

function f(){
}

不可删除。

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

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

在这里看到它:http: //jsfiddle.net/Sxnaw/

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

于 2012-11-18T12:01:01.430 回答