現在、スライダーや簡単なアニメーションなど様々な形でシンプルなサイトでも導入されているJavaScriptですが、もちろんウェブデザイン技能検定の学科の範囲にも入っています。
なんとなく使えるけどといった方やjQueryは使用できるけど、プラグインだけなら、といった方も多くいらっしゃると思いますので、今回はウェブデザイン技能検定の過去問に出た問題に近い内容からJavaScriptのECMAScript 2015(ES6)ついてなど解説していきたいと思います。
ECMAScript 2015(ES6)とは
ECMAScript は、JavaScriptの標準仕様を定めるスクリプト言語の規格です。
ECMAScript 2015(ES6)は、ECMAScriptの第6版であり、JavaScriptの言語仕様に多くの新機能と改善をもたらしました。
let と const の概要
let
と const
は、ES6で導入された新しい変数宣言方法です。
let
説明: let
はブロックスコープの変数を宣言するためのキーワードです。これは、変数が宣言されたブロック(例えば {}
内)でのみ有効であり、そのブロックの外ではアクセスできません。
特徴:
- ブロックスコープ: 変数はその宣言されたブロック内でのみ有効。
- 再宣言不可: 同じスコープ内で同じ名前の変数を再宣言することはできません。
- 再代入可能: 同じスコープ内で再代入が可能。
使用例:
let x = 10;
if (true) {
let x = 20; // ブロックスコープ内で新しい変数xを宣言
console.log(x); // 20
}
console.log(x); // 10
const
説明: const
は定数を宣言するためのキーワードです。これは、宣言された変数が再代入できないことを保証します。
特徴:
- ブロックスコープ: 変数はその宣言されたブロック内でのみ有効。
- 再宣言不可: 同じスコープ内で同じ名前の変数を再宣言することはできません。
- 再代入不可: 宣言後に変数に新しい値を代入することはできません。ただし、オブジェクトや配列の場合、その内容を変更することは可能です。
使用例:
const y = 30;
if (true) {
const y = 40; // ブロックスコープ内で新しい定数yを宣言
console.log(y); // 40
}
console.log(y); // 30
// y = 50; // エラー: yは再代入できない
ECMAScript 2015(ES6)のその他の代表的な新機能
1. アロー関数(Arrow Functions)
説明: 簡潔な関数表記法を提供します。
特徴:
- シンプルな構文: 無名関数をより簡潔に書けます。
this
バインディングの継承: アロー関数は囲むスコープのthis
を継承します。
制約:
this
の扱い: アロー関数は自身のthis
コンテキストを持たないため、イベントハンドラやメソッドとして使用する場合には注意が必要です。arguments
オブジェクト: アロー関数はarguments
オブジェクトを持ちません。
使用例:
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5
const numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6]
2. テンプレートリテラル(Template Literals)
説明: 文字列の埋め込みや複数行文字列を簡単に扱うための機能です。
特徴:
- バッククォートで囲む:
`
- 変数の埋め込み:
${}
を使用。 - 複数行文字列: 改行を含む文字列をそのまま表現可能。
使用例:
const name = 'John';
const greeting = `Hello, ${name}!`;
console.log(greeting); // Hello, John!
const multiLine = `これは
複数行の
文字列です。`;
console.log(multiLine);
3. デフォルトパラメータ(Default Parameters)
説明: 関数のパラメータにデフォルト値を設定できます。
特徴:
- デフォルト値: パラメータが未指定の場合に使用される値を指定できます。
使用例:
function greet(name = 'Guest') {
return `Hello, ${name}!`;
}
console.log(greet()); // Hello, Guest!
console.log(greet('Alice')); // Hello, Alice!
4. 分割代入(Destructuring Assignment)
説明: 配列やオブジェクトから値を抽出して変数に代入するための簡潔な方法です。
特徴:
- 配列とオブジェクトのサポート: 配列やオブジェクトから個々の値を抽出して変数に代入できます。
使用例:
// 配列の分割代入
const [a, b] = [1, 2];
console.log(a); // 1
console.log(b); // 2
// オブジェクトの分割代入
const {name, age} = {name: 'John', age: 30};
console.log(name); // John
console.log(age); // 30
5. クラス(Classes)
説明: JavaScriptにオブジェクト指向プログラミングの概念を導入するための構文糖です。
特徴:
- コンストラクタ: オブジェクトの初期化を行うためのメソッドを定義できます。
- メソッド: クラス内にメソッドを定義できます。
- 継承:
extends
キーワードを使用してクラスの継承が可能です。
使用例:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
return `Hello, my name is ${this.name} and I am ${this.age} years old.`;
}
}
class Student extends Person {
constructor(name, age, grade) {
super(name, age);
this.grade = grade;
}
study() {
return `${this.name} is studying.`;
}
}
const john = new Person('John', 30);
console.log(john.greet()); // Hello, my name is John and I am 30 years old.
const alice = new Student('Alice', 20, 'A');
console.log(alice.greet()); // Hello, my name is Alice and I am 20 years old.
console.log(alice.study()); // Alice is studying.
まとめ
ECMAScript 2015(ES6)は、JavaScriptに多くの新機能と改善をもたらしました。let
と const
はその一部であり、ブロックスコープの変数宣言と定数宣言を可能にします。
その他の代表的な新機能として、アロー関数、テンプレートリテラル、デフォルトパラメータ、分割代入、クラスなどがあります。
これらの新機能を使用することで、よりモダンで効率的なJavaScriptコードを記述することができます。