3

重複の可能性:
JavaScript の削除演算子

次のコードがあります。2 番目の削除が失敗する理由がわかりません。

また、foo に何か他のものを割り当てた後でも、foo 関数がまだ存在していることに気付きました。

関数を参照する方法はありますか?( a を割り当てのように動作さ
せたいとします)。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

ありがとう

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 に答える