gotin blog

Whatever gotin wanna write

deleteメモ

var 文により作られるプロパティは DontDelete 属性を持ちます。

たとえば、グローバルコードで eval 関数を呼び出し、その eval コード内に var 文が含まれていたとき、その var 文により作られるプロパティはグローバルオブジェクトのものとなります。ですが、そのプロパティは DontDelete 属性を持ちません。

JavaScript の変数と delete 演算子: Days on the Moon

なるほどそうだったのか。知らなかったです。


ちなみにGreasemonkeyFirebugでは、トップレベルであればvar 宣言した変数でもdeleteできちゃいます(関数内のvar宣言変数はdeleteできません)。
それは内部的にはeval(もしくはそれ相当の処理)がなされて動作しているからなんだと思われます。
GreasemonkeyとかFirebugのソースを読むときっと分かるんだと思います。そのうち読んでみます。