58

私はjavascriptにかなり慣れていません。どうやら「use strict」モードで操作していると、オブジェクトを削除できないことに気付きました。私は物事を削除することはあまり好きではありません (理論的にはスコープがそれを処理するはずなので) が、この機能を削除した動機は何だったのだろうか?

4

2 に答える 2

87

このdeleteステートメントは厳密モードでも許可されますが、特定の使用法には誤りがあります。単純な名前ではなく、削除可能なオブジェクト プロパティに対してのみ許可されます。

したがって

var a = {x: 0};
delete a.x;

大丈夫ですが、

delete Object.prototype;

そうではなく、どちらでもない

delete a;

(後者は実際には構文レベルのエラーですが、削除できないプロパティを削除しようとすると実行時エラーになります。)

于 2013-05-20T15:13:12.000 に答える