Skip to content

JavaScriptのES6以降の新機能

公開日:November 17, 2024更新日:November 28, 2024
JavaScriptTypeScriptCoding📄

letconst の違い

ES6で導入された letconst は、変数や定数を宣言するためのキーワードです。これらは従来の var よりもスコープが限定されており、コードの可読性や安全性を向上させます。

  • let

    • 再代入が可能で、ブロックスコープ({} 内)を持ちます。
    • 再代入が必要な変数や、動的に値を変更する場合に使用します。
    javascript
    let counter = 0;
    counter = 1; // 再代入可能
  • const

    • 再代入が不可能で、値が変わらない定数を宣言するために使います。
    • 基本的に変更しない値を扱うときは const を使うことで、誤って値を変更するリスクを防げます。
    javascript
    const pi = 3.14;
    // pi = 3.14159; // エラーが発生する

テンプレートリテラル

テンプレートリテラルは、バッククォート ` を使って文字列を簡単に作成するための構文です。変数の埋め込みや改行を含む複雑な文字列を容易に扱うことができます。

  • 変数の埋め込み

    javascript
    let name = '太郎';
    let greeting = `こんにちは、${name}さん!`;
    console.log(greeting); // 出力: こんにちは、太郎さん!

    ${} を使うことで、文字列内に変数や式を簡単に埋め込むことができます。

  • 複数行の文字列

    javascript
    let message = `このメッセージは
    複数行にわたっています。`;
    console.log(message);
    // 出力:
    // このメッセージは
    // 複数行にわたっています。

分割代入とスプレッド構文

分割代入とスプレッド構文は、オブジェクトや配列の操作をより簡潔に行うための機能です。

  • 分割代入 オブジェクトや配列から特定の値を簡単に取り出すことができます。

    javascript
    // 配列の分割代入
    let [a, b] = [1, 2];
    console.log(a); // 出力: 1
    console.log(b); // 出力: 2
    
    // オブジェクトの分割代入
    let person = { name: '花子', age: 25 };
    let { name, age } = person;
    console.log(name); // 出力: 花子
    console.log(age); // 出力: 25
  • スプレッド構文 スプレッド構文(...)は、配列やオブジェクトを展開してコピーしたり、結合したりするのに使われます。

    javascript
    // 配列の結合
    let fruits = ['りんご', 'バナナ'];
    let moreFruits = [...fruits, 'オレンジ', 'ぶどう'];
    console.log(moreFruits); // 出力: ['りんご', 'バナナ', 'オレンジ', 'ぶどう']
    
    // オブジェクトのコピー
    let original = { x: 1, y: 2 };
    let copy = { ...original, z: 3 };
    console.log(copy); // 出力: { x: 1, y: 2, z: 3 }

クラス (class) の基本

クラスはオブジェクト指向プログラミングをサポートするために導入された構文で、オブジェクトの設計図として使われます。これにより、オブジェクトを生成しやすくし、コードの再利用性が高まります。

  • クラスの定義

    javascript
    class Person {
      constructor(name, age) {
        this.name = name;
        this.age = age;
      }
    
      greet() {
        console.log(`こんにちは、${this.name}です。`);
      }
    }
    
    let taro = new Person('太郎', 30);
    taro.greet(); // 出力: こんにちは、太郎です。

    constructor メソッドはオブジェクトが生成されたときに呼び出され、初期化を行います。クラスの中にはメソッド(関数)を定義することができ、オブジェクトごとに共通の動作を実装できます。

  • 継承 クラスは他のクラスを継承することができ、コードの再利用や機能の拡張が容易になります。

    javascript
    class Student extends Person {
      constructor(name, age, grade) {
        super(name, age); // 親クラスのコンストラクタを呼び出す
        this.grade = grade;
      }
    
      study() {
        console.log(`${this.name}は勉強しています。`);
      }
    }
    
    let hanako = new Student('花子', 22, 'A');
    hanako.greet(); // 出力: こんにちは、花子です。
    hanako.study(); // 出力: 花子は勉強しています。

    extends キーワードを使うことで、既存のクラスを基に新しいクラスを定義できます。super() を使って親クラスのコンストラクタを呼び出し、基本的なプロパティを継承します。

ES6以降の新機能のまとめ

ES6で導入されたこれらの新機能は、JavaScriptのコーディングをより簡潔で効率的にし、コードの可読性や再利用性を高めます。letconst、テンプレートリテラル、分割代入とスプレッド構文、クラスなどを活用することで、よりモダンで使いやすいJavaScriptの記述が可能になります。