7

厳密モード規則の 1 つ (付録 C ) には、次のように記載されています。

delete厳密モード コード内で演算子が発生した場合、そのUnaryExpressionが変数、関数引数、または関数名への直接参照である場合、SyntaxError がスローされます。

したがって、このコードでは:

delete x

x参考です。( 「識別子を評価した結果は常に参照型の値である」ため、これを知っています)。しかし、それは直接参照ですか?

そして、他の種類の参照はありますか?間接参照?(そうでない場合、「直接」という言葉を使用する意味は何ですか?)

4

2 に答える 2

1

はい、さまざまな種類がありますReferences( EcmaScript §8.7 )。たとえば、メンバー演算子 ( EcmaScript §11.2.1 )は、基本値が の値である参照baseReferenceになります。これを「直接的ではない」と呼びます。「直接参照」は識別子参照 ( EcmaScript §10.2.2.1で、基本値は環境レコードです。

于 2012-09-26T21:01:28.493 に答える
0

私が正しく理解している場合、プロパティとして定義されていないもの。

これらは、コンソールでエラーをスローするか、失敗するはずです。

(function(){ 'use strict'; var x = '2'; delete x; })();
(function(){ 'use strict'; delete arguments[0]; })('2');
于 2012-09-26T21:24:11.997 に答える