考虑:
function a() { a = null; }
为什么不能分配?
答案 0 :(得分:4)
这里的规范似乎相当严格,但是函数定义表现得非常奇怪,所以这是可以理解的。 (也就是说,你可以在源代码中提前调用它们而不是声明它们......奇怪!)
只能分配引用表达式,在Section 4 of the spec中定义为:
...引用是标识符(第4.3节),括号(第4.7节)和属性访问(第4.10节)的组合。
和4.3,
引用变量或参数的标识符表达式被分类为引用。引用任何其他类型实体的标识符表达式被分类为值(因此不能是赋值的目标)。
因此,您可以将它从函数定义更改为变量声明,可能对代码的其余部分几乎没有任何更改:
var foo = function() {
foo = null;
}
答案 1 :(得分:1)
TypeScript不允许对已声明的函数进行赋值,因为正如您在评论中看到的那样,故意这样做是非常罕见的。您实际上想要覆盖已声明的函数的可能性更大(您打算分配给aa
而不是a
)。