JavaScriptで「class」が予約語になるのはなぜ?その理由と仕様を解説
「class」は将来のために予約されたキーワード
JavaScriptでは、「class」という名前を変数名や関数名として自由に使うことができません。これは、ECMAScriptの仕様において「class」が将来のために予約された語(Future Reserved Words)として定められているためです。
ECMAScriptの仕様では、以下の単語が将来の拡張機能のために予約されています。
class enum extends super
const export import
これらの単語は、当時提案されていた言語拡張機能の中でキーワードとして使用される予定だったため、将来的にそれらの機能が採用された場合に備えて、あらかじめ予約されていました。つまり、既存コードとの互換性を保ちながら、新しい構文をスムーズに導入するための措置なのです。
ECMAScript 6(ES2015)でのクラス構文の導入
この予測は現実のものとなり、ECMAScript 6(ES2015)の言語仕様において、正式にクラス宣言が導入されました。クラス宣言は次のような構文で記述します。
class クラス名 [extends 親クラス] {
// クラスの本体
}
具体的な使用例は以下の通りです。
class Person {
constructor(name) {
this.name = name;
}
greet() {
console.log(`こんにちは、${this.name}さん!`);
}
}
const person = new Person('太郎');
person.greet(); // こんにちは、太郎さん!
まとめ
JavaScriptで「class」が予約語になっているのは、将来の言語拡張に備えた仕様上の決定によるものです。実際にES2015でクラス構文が導入され、現在ではオブジェクト指向プログラミングを実現するための重要な機能として広く利用されています。そのため、変数名や関数名に「class」を使うことはできず、別の名前を選ぶ必要がある点に注意しましょう。
-
JavaScriptのclassキーワードとは?クラス定義の基本をわかりやすく解説
ES6(ECMAScript 2015)で導入されたJavaScriptのクラスは、プロトタイプベースの継承に対する「構文糖衣(シンタックスシュガー)」と呼ばれています。実体は「特別な関数」であり、classキーワードを使うことで、より直感的で読みやすいコードとしてオブジェクト指向プログラミングを実現できます。 classキーワードによる基本的なクラス定義 classキーワードを使用したクラス定義の基本構文は以下の通りです。 class Person { // このクラスのコンストラクタ constructor(name) { this.name = name;
-
JavaScriptのconstで定義された変数は変更できるのか?徹底解説
JavaScriptでは、constキーワードを使って定義された変数は、再代入することができません。つまり、一度値を代入した後は、同じ変数に別の値を割り当てることはできません。 ただし、オブジェクトをconstで定義した場合でも、そのオブジェクトのコピーを作成して変更を加えれば、元のオブジェクトは影響を受けず、初期値のまま保たれます。 以下は、constで定義した変数の例です。 const details1 = { firstName: David, subjectDetails: { subjectName: JavaScript } } コード例 次のコードでは、スプレッド