ちょっとハマったのでメモ。 例えば alert(A); function A() { } はできるが、 alert(A); class A { } ができないのはなぜか。 class A { } class B extends A { } 例えば、このようなコードの場合、hoisting(スコープ先端への巻き上げ)をしても問題ないが、 関数と違ってextendsはその場で評価しなければいけないことがある。 例えば、 var A = function () { }; A.prototype.x = function () { return 1; }; class B extends A { } alert(new B().x()); というコードの場合、BクラスはAを継承しなければいけないので、var Aで宣言されているものはhoistingされないのでclass宣言もその場で評価しないと、