JavaScript Liaison de nom de classe


Exemple

Le nom de ClassDeclaration est lié de différentes manières dans différentes portées -

  1. La portée dans laquelle la classe est définie - let liaison
  2. La portée de la classe elle-même - entre { et } dans la class {} - la liaison const
class Foo {
  // Foo inside this block is a const binding
}
// Foo here is a let binding

Par exemple,

class A {
  foo() {
    A = null; // will throw at runtime as A inside the class is a `const` binding
  }
}
A = null; // will NOT throw as A here is a `let` binding

Ce n'est pas la même chose pour une fonction -

function A() {
  A = null; // works
}
A.prototype.foo = function foo() {
  A = null; // works
}
A = null; // works