JavaScript - ES6: 現代のJavaScriptへの入門ガイド

こんにちは、未来のJavaScript魔術師たち!ES6への興奮的な旅にあなたをお連れするのがとても楽しみです。JavaScriptの革命を引き起こしたES6の魔法を、10年以上にわたるプログラミング指導経験を持つ私がお伝えします。さあ、魔杖(またはキーボード)を握りしめ、一緒に飛び込んでみましょう!

JavaScript - ES6

ES6に追加された新しい機能

ES6、別名ECMAScript 2015は、JavaScriptに宝の山ものの新しい機能をもたらしました。まるでJavaScriptがスーパーヒーロースクールに行って、新しいパワーセットを手に入れて戻ってきたかのようです!これらのスーパーパワーの一つ一つを見ていきましょう。

JavaScriptのアロー関数

アロー関数は、通常の関数のクールでファッションないとこのようなものです。它们は短く、スリムで、時にはさらに強力です。以下に例を示します:

// 古い方法
function sayHello(name) {
return "Hello, " + name + "!";
}

// アロー関数の方法
const sayHello = (name) => `Hello, ${name}!`;

console.log(sayHello("Alice")); // 出力: Hello, Alice!

この例では、通常の関数をアロー関数に変換しています。functionキーワードを削除し、=>(太い矢印)を追加していることに注意してください。まるで私たちの関数がダイエットをして、素晴らしい姿に戻ってきたかのようです!

JavaScriptのArray find()メソッド

find()メソッドは、配列の探偵のようなものです。配列を検索し、最初にテストをパスする要素を返します。以下のように動作します:

const numbers = [1, 2, 3, 4, 5];
const firstEvenNumber = numbers.find(num => num % 2 === 0);

console.log(firstEvenNumber); // 出力: 2

この場合、私たちのfind()メソッドは最初の偶数を探しています。それが2で割り切れるかどうかをチェックし、最初に見つかった場合にその値を返します。

JavaScriptのArray findIndex()メソッド

findIndex()find()のいとこです。代わりに要素のインデックスを返します。以下に動作を示します:

const fruits = ["apple", "banana", "cherry", "date"];
const indexOfLongFruit = fruits.findIndex(fruit => fruit.length > 5);

console.log(indexOfLongFruit); // 出力: 1

ここでは、6文字以上の果物を探しています。「Banana」が最初にこの基準を満たすため、そのインデックス(1)が返されます。

JavaScriptのArray from()メソッド

Array.from()は、配列のようなオブジェクトやイテラブルを本物の配列に変換する魔术師のようなものです。特にDOM要素を扱う際に便利です。以下に例を示します:

const name = "Alice";
const nameArray = Array.from(name);

console.log(nameArray); // 出力: ["A", "l", "i", "c", "e"]

この場合、文字列を個々の文字の配列に変換しています。すごいですね?

JavaScriptのArray keys()メソッド

keys()メソッドは、配列のキーを返すArray Iteratorオブジェクトを返します。まるで配列のインデックスにVIPパスを手に入れたかのようです。以下に動作を示します:

const fruits = ["apple", "banana", "cherry"];
const keys = fruits.keys();

for (let key of keys) {
console.log(key);
}
// 出力:
// 0
// 1
// 2

このメソッドは、配列のインデックスにアクセスするのに非常に便利です。

JavaScriptのクラス

ES6のクラスは、JavaScriptにオブジェクト指向プログラミングをより直感的な方法で導入しました。它们はオブジェクトを作成するための蓝图です。以下に簡単なクラスを作成します:

class Dog {
constructor(name) {
this.name = name;
}

bark() {
return `${this.name} says woof!`;
}
}

const myDog = new Dog("Buddy");
console.log(myDog.bark()); // 出力: Buddy says woof!

この例では、Dogクラスを作成し、コンストラクタとメソッドを定義しています。このクラスを使用して新しいDogオブジェクトを作成できます。

JavaScriptのconstキーワード

constキーワードは、変数の安全な預金庫のようなものです。一度値を入れると、それが固定され、変更できなくなります。値が再割り当てされるべきでない場合に最適です。以下に動作を示します:

const PI = 3.14159;
// PI = 3; // これはエラーを引き起こします

console.log(PI); // 出力: 3.14159

この例では、PIを定数として宣言しています。再割り当てを試みると、JavaScriptはエラーをスローします。

JavaScriptのletキーワード

letは、varのより責任ある兄弟のようなものです。ブロックスコープを提供し、多くの一般的なプログラミングミスを防ぐことができます。以下に動作を示します:

let x = 1;

if (true) {
let x = 2; // これは別の`x`です
console.log(x); // 出力: 2
}

console.log(x); // 出力: 1

この場合、ifブロック内のxは、ブロック外のxとは別の変数です。letのブロックスコープのおかげです。

JavaScriptのデフォルトパラメータ

デフォルトパラメータは、関数のセーフティネットのようなものです。引数が渡されない場合にデフォルト値を提供します。以下に動作を示します:

function greet(name = "Guest") {
return `Hello, ${name}!`;
}

console.log(greet()); // 出力: Hello, Guest!
console.log(greet("Alice")); // 出力: Hello, Alice!

この例では、名前が提供されない場合、関数は「Guest」をデフォルト値として使用します。

JavaScriptのfor...ofループ

for...ofループは、配列を迭代する新しい、より簡潔な方法です。データのガイドツアーのようなものです。以下に動作を示します:

const fruits = ["apple", "banana", "cherry"];

for (let fruit of fruits) {
console.log(fruit);
}
// 出力:
// apple
// banana
// cherry

このループは、配列の各要素を自動的に迭代します。

JavaScriptの関数のリストパラメータ

リストパラメータは、関数に渡される追加の引数をキャッチするネットのようなものです。3つのドット(...)に続く名前で表されます。以下に例を示します:

function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3, 4)); // 出力: 10

この場合、...numbersはすべての引数をキャッチし、配列に変換します。

JavaScriptのモジュール

モジュールは、コードのLEGOブロックのようなものです。コードを複数のファイルに分割し、必要な機能をインポート/エクスポートすることができます。以下に簡単な例を示します:

// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// main.js
import { add, subtract } from './math.js';

console.log(add(5, 3)); // 出力: 8
console.log(subtract(5, 3)); // 出力: 2

このモジュラーなアプローチは、コードを整理し、再利用可能にします。

JavaScriptのMapオブジェクト

Mapオブジェクトは、スーパーパワーのオブジェクトのようなものです。任意のタイプのキーを許可し、エントリの順序を保持します。以下に動作を示します:

const myMap = new Map();

myMap.set('name', 'Alice');
myMap.set(1, 'number one');

console.log(myMap.get('name')); // 出力: Alice
console.log(myMap.get(1)); // 出力: number one

Mapは、追加のデータをオブジェクトに関連付けるのに非常に便利です。

新しいグローバルメソッド

ES6はいくつかの新しいグローバルメソッドを導入しました。以下にその一つを見てみましょう:isFinite()

console.log(Number.isFinite(10)); // 出力: true
console.log(Number.isFinite(Infinity)); // 出力: false
console.log(Number.isFinite("10")); // 出力: false

このメソッドは、値が有限数かどうかをチェックします。

新しいJavaScript Mathメソッド

ES6は新しいMathメソッドも導入しました。其一つはMath.trunc()で、小数部分を削除します:

console.log(Math.trunc(4.9)); // 出力: 4
console.log(Math.trunc(-4.2)); // 出力: -4

このメソッドは、整数の作業に非常に便利です。

新しいNumberメソッド

新しいNumberメソッドも導入されました。以下に其一つを見てみましょう:Number.isInteger()

console.log(Number.isInteger(10)); // 出力: true
console.log(Number.isInteger(10.5)); // 出力: false

このメソッドは、値が整数かどうかをチェックします。

新しいNumberプロパティ

ES6は新しいNumberプロパティも追加しました。以下に其一つを見てみましょう:Number.EPSILON

console.log(Number.EPSILON); // 出力: 2.220446049250313e-16

EPSILONは、2つの表現可能な数の最小区間を表します。

JavaScriptのPromise

Promiseは、JavaScriptのIOUのようなものです。将来利用可能になる値を表します。以下に簡単な例を示します:

const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success!");
}, 1000);
});

myPromise.then(result => console.log(result)); // 1秒後に出力: Success!

Promiseは、非同期操作を処理するのに非常に重要です。

JavaScriptのSetオブジェクト

Setオブジェクトは、重複のない値のコレクションです。配列のようなものですが、重複がありません。以下に動作を示します:

const mySet = new Set([1, 2, 3, 3, 4]);

console.log(mySet); // 出力: Set(4) {1, 2, 3, 4}

Setは、重複値を自動的に削除します。

JavaScriptの新しいStringメソッド

ES6はいくつかの新しいStringメソッドを導入しました。以下に其一つを見てみましょう:startsWith()

const str = "Hello, world!";

console.log(str.startsWith("Hello")); // 出力: true
console.log(str.startsWith("world")); // 出力: false

このメソッドは、文字列が指定された文字列で始まるかどうかをチェックします。

JavaScriptのSymbol

Symbolは、ES6の新しいプリミティブタイプです。它们はユニークで不変であり、しばしばオブジェクトのプロパティキーとして使用されます。以下に例を示します:

const mySymbol = Symbol("mySymbol");
const obj = {
[mySymbol]: "Hello, Symbol!"
};

console.log(obj[mySymbol]); // 出力: Hello, Symbol!

Symbolは、オブジェクトに非文字列のプロパティキーを作成するのに便利です。

JavaScriptのスプレッドオペレータ

スプレッドオペレータは、配列を個々の要素に展開する魔法の杖のようなものです。非常に多様に使用できます。以下に例を示します:

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];

console.log(arr2); // 出力: [1, 2, 3, 4, 5]

スプレッドオペレータは、配列を個々の要素に展開します。

結論

うわー!私たちはたくさんのことをカバーしましたね?ES6はJavaScriptに多くの興味深い機能をもたらし、私たちはまだ表面をなぞっただけです。これらの概念をマスターする鍵は練習です。ですから、進んでコードを書き、ものを壊し、直し、楽しみながら学びましょう。間もなく、あなたはプロのように現代のJavaScriptを書くことができるでしょう!

以下に、私たちが議論したメソッドの总结を示します:

メソッド 説明
アロー関数 機能的には短く、スリムで、時にはさらに強力な関数表現
Array.find() 配列内で最初にテストをパスする要素を返す
Array.findIndex() 配列内で最初にテストをパスする要素のインデックスを返す
Array.from() 配列のようなオブジェクトやイテラブルを本物の配列に変換する
Array.keys() 配列のキーを返すArray Iteratorオブジェクトを返す
Class オブジェクトを作成するためのテンプレート、オブジェクト指向プログラミングの cleanerなシンタックスを提供する
const ブロックスコープの不変の定数を宣言する
let ブロックスコープのローカル変数を宣言する
Default Parameters 関数の名前パラメータにデフォルト値を提供する
for...of イテラブルオブジェクトを迭代する
Rest Parameter 関数に不定数の引数を渡す
Modules コードを複数のファイルに分割し、必要な機能をインポート/エクスポートする
Map 任意のタイプのキーを許可し、エントリの順序を保持するコレクション
Number.isFinite() 値が有限数かどうかをチェックする
Math.trunc() 数値の小数部分を削除する
Number.isInteger() 値が整数かどうかをチェックする
Promise 非同期操作の最終的な完了(または失敗)を表す
Set 重複のない値のコレクション
String.startsWith() 文字列が指定された文字列で始まるかどうかをチェックする
Symbol ユニークで不変のプリミティブ値
Spread Operator 配列を個々の要素に展開する

ハッピーコーディング、そしてES6があなたと共にありますように!

Credits: Image by storyset