什么是直接参考?

时间:2012-09-26 20:56:43

标签: javascript reference theory

严格模式规则之一(Annex C)声明:

  

delete运算符出现在严格模式代码中时,如果 UnaryExpression 是对变量,函数参数的直接引用,则抛出 SyntaxError ,或者功能名称。

所以在这段代码中:

delete x

x是一个参考。 (我知道这是因为"the result of evaluating an Identifier is always a value of type Reference")。但这是直接参考吗?

还有其他类型的参考吗?间接引用? (如果没有,那么使用“直接”一词有什么意义?)

2 个答案:

答案 0 :(得分:1)

是的,ReferencesEcmaScript §8.7)有不同种类。例如,成员运算符(EcmaScript §11.2.1)会生成基值baseReference的值的引用,我称之为“非直接”。 “直接引用”将是标识符引用(EcmaScript §10.2.2.1,其中基值是环境记录。

答案 1 :(得分:0)

如果我理解正确的话,任何未被定义为属性的东西。

这些应该在控制台中抛出错误或失败:

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