2

Spidermonkey 1.8 を使用する JSDB 1.8 でこれを行う場合:

 this.x = 3;
 var y = 4;
 function z() { return 77; }
 this.w = function w() { return 44; }
 this.v = function v() { return 55; }
 w = function w() { return 66; }
 function v() { return 77; }
 delete x;
 delete y;
 delete z;
 delete w;
 delete v;

私は and 行から取得しますが、 and and行trueから取得します。delete xdelete wfalsedelete ydelete zdelete v

この動作は ECMAscript 標準または Spidermonkey で定義されていますか? 特定のスコープから関数を削除したかったのですが、できないことがわかりました。

4

3 に答える 3

1

この動作を説明するもう1つの優れたリンクは、MDNhttps://developer.mozilla.org/en/JavaScript/Reference/Operators/deleteからです

これは、グローバル名前空間でvarキーワードを使用して定義された変数を削除できないことを示しています。

ただし、javascript 1.8.5を使用している場合は、ObjectのdefinePropertyメソッドを使用して、設定可能なオプションをtrueに設定することで削除できるプロパティを作成できます。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty

于 2012-04-02T17:48:00.003 に答える
1

ここで削除の詳細な説明全体を読んでください http://perfectionkills.com/understanding-delete/

于 2012-04-02T17:32:54.553 に答える
0

Helmus が投稿したリンクが説明しているように、大まかに言えば (この記事で説明されているように、この分野にはいくつかのクロスブラウザーの癖があります)、変数は削除できませんが、プロパティは削除できます。

グローバル スコープでは、var キーワードなしで宣言された変数は、グローバル オブジェクトのプロパティと見なされることに注意してください。そう:

var global_var1 = 'some val';
global_var2 = 'some val';
delete global_var1; //false
delete global_var2; //true
typeof global_var1; //'string'
typeof global_var2; //'undefined'
于 2012-04-02T17:31:15.200 に答える