JavaScript Classes Class Name binding

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Extensions
> Step 2: And Like the video. BONUS: You can also share it!

Example

ClassDeclaration's Name is bound in different ways in different scopes -

  1. The scope in which the class is defined - let binding
  2. The scope of the class itself - within { and } in class {} - const binding
class Foo {
  // Foo inside this block is a const binding
}
// Foo here is a let binding

For example,

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

This is not the same for a Function -

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


Got any JavaScript Question?