Qu'est-ce qu'une référence directe?

L'une des règles de mode strict ( Annexe C ) indique:

Lorsqu'un opérateur de delete se produit dans un code de mode strict, un SyntaxError est lancé si son UnaryExpression est une référence directe à une variable, un argument de fonction ou un nom de fonction.

Donc dans ce code:

 delete x 

x est une référence. (Je le sais parce que "le résultat de l'évaluation d'un identifiant est toujours une valeur de type de référence" ). Mais s'agit-il d'une référence directe ?

Et y a-t-il d'autres types de références? Des références indirectes? (Si non, quel est l'intérêt de l'utilisation du mot «direct»?)

Oui, il existe différents types de References ( EcmaScript §8.7 ). Les opérateurs membres ( EcmaScript §11.2.1 ), par exemple, donnent lieu à des références dont la valeur de base est la valeur de baseReference , que j'appellerais «non direct». Une «référence directe» serait une référence d'identificateur ( EcmaScript §10.2.2.1 , où la valeur de base est un enregistrement environnemental.

Tout ce qui n'est pas défini comme une propriété si je comprends bien.

Ceux-ci devraient lancer des erreurs ou échouer dans une console:

 (function(){ 'use strict'; var x = '2'; delete x; })(); (function(){ 'use strict'; delete arguments[0]; })('2');