JavaScriptでは、delete
関数の引数はありませんが、 はdelete
関数のグローバル変数です。javascriptのdelete演算子の振る舞い
この現象はなぜですか?
var y = 1;
(function (x) { return delete y; })(1); // true
(function (x) { return delete x; })(1); // false
JavaScriptでは、delete
関数の引数はありませんが、 はdelete
関数のグローバル変数です。javascriptのdelete演算子の振る舞い
この現象はなぜですか?
var y = 1;
(function (x) { return delete y; })(1); // true
(function (x) { return delete x; })(1); // false
編集:両方(すなわちないeval()
を使用Firebugのまたはブラウザコンソール内)通常の使用でfalse
を返します。 Tim Down’s answerを参照してください(受け入れられるはずです)。
実際に最初の例は、 'y'が' var'を使って宣言されているため、 '[[DontDelete]]属性を持っているので動作しません(ECMAScript 3では:[[Configurable]]'はECMAScript 5 )をtrueに設定します。 –
@Tim:ありがとう!私は訂正した。私の答えを編集しました。 –
実際には、いずれもtrue
を返さず、実際にはFirefoxやChrome(他のブラウザではテストされていません)にはありません。 Firebugや別のブラウザコンソール(changes things due to the console using eval()
)でこれをテストしたと思います。 delete
はオブジェクトのプロパティを削除するだけで、var
を使用して宣言された変数をスコープに関係なく削除することはできません。
ここ被験者にKangaxことにより、優れた記事の:http://perfectionkills.com/understanding-delete/
両方リターン 'false'に(すなわちない'のeval()を '使用Firebugのまたはブラウザコンソール内の)通常の使用では。私の答えを見てください。 –