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