Page 184 - JavaScript
P. 184

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


        Read Classes online: https://riptutorial.com/javascript/topic/197/classes











































        https://riptutorial.com/                                                                             141
   179   180   181   182   183   184   185   186   187   188   189