JavaScript Primer v7.0.0リリース: ES2025対応とIterator Helpersの新章追加
JavaScript Primer v7.0.0をリリースしました 🎉
JavaScript Primer v7.0.0では、ECMAScript 2025への対応と、新しく「イテレータとジェネレータ」の章を追加しています。 Iterator Helpersをはじめとした、ES2025の新機能を学ぶことができます。
JavaScript Primer Sponsors
JavaScript Primer(jsprimer)では、Open Collectiveを通じてプロジェクトの更新に関わる資金を募っています。
今回のv7リリースにおいては、次の方々にご支援いただきました!
Gold Sponsors
Supporters
ご支援ありがとうございます!
JavaScript Primerスポンサーについては、次のページを参照してください。
また、ご支援いただいた資金は、jsprimerにcontributionしてくれた方へ還元できるような仕組みを引き続き運用しています。 今回から同じ金額を他のCollective(オープンソースプロジェクト)に寄付する仕組みも追加しました。 Contributorが受け取る代わりに、指定されたCollectiveへ同じ金額を寄付できます。
JavaScript Primer v7.0.0の変更点
JavaScript Primer v7.0.0の変更点について紹介します。
リリースノートは次のページからも確認できます。
更新をメールで受け取りたい方は、次のフォームから登録できます。
変更のサマリ
ES2025
- Iterator Helpers(
Iterator.from()
,.take()
,.map()
など)- 新章追加(イテレータとジェネレータ)
RegExp.escape
-
Set Methods(
.intersection()
,.union()
,.difference()
など) - Import Attributes
その他
- Dynamic Import(ES2020)
-
Array.prototype.flatMap
(ES2019)
新章: イテレータとジェネレータ
概要
ES2025で追加されたIterator Helpersを含む、イテレータとジェネレータに関する新しい章を追加しました。 これは、v7での最も大きな追加です。
変更されたページ
内容
この章では次の内容をカバーしています。
イテレータの基礎
-
Symbol.iterator
を使ったIterableプロトコルの実装とIteratorプロトコルについて -
for...of
文での反復処理 - ビルトインオブジェクトとしてのIterableオブジェクト(配列、文字列、Map、Setなど)
Iterator Helpers (ES2025新機能)
-
Iterator.from()
でイテレータの作成 -
Iterator.prototype
のメソッド-
.map()
- 値の変換 -
.filter()
- 値のフィルタリング -
.take()
- 指定数の要素を取得 -
.drop()
- 指定数の要素をスキップ -
.flatMap()
- 平坦化しながら変換 -
.reduce()
- reduce -
.toArray()
- 配列への変換
-
// Iterator.prototype.toArray の使用例
const iterator = Iterator.from([1, 2, 3]).map((x) => x * 2);
// Iteratorを配列に変換
const array = iterator.toArray();
console.log(array); // => [2, 4, 6]
RegExp.escape
の追加
概要
ES2025で追加されたRegExp.escape
メソッドは、文字列内の正規表現の特殊文字を自動的にエスケープします。
ユーザー入力を正規表現で安全に扱うための重要な機能です。
変更されたページ
変更内容
// RegExp.escape の例
const escaped = RegExp.escape("+");
console.log(escaped); // \+
Set Methodsの追加
概要
ES2025でSetに数学的な集合演算を行うメソッドが追加されました。 これにより、複数のSet間の演算が簡潔に書けるようになりました。
変更されたページ
追加されたメソッド
// Set メソッドの例
const setA = new Set([1, 2, 3, 4, 5]);
const setB = new Set([3, 4, 5, 6, 7]);
// 和集合 (A∪B): セットAとセットBのすべての要素を含む集合
const unionSet = setA.union(setB);
console.log([...unionSet]); // => [1, 2, 3, 4, 5, 6, 7]
// 積集合 (A∩B): セットAとセットBの両方に存在する要素のみの集合
const intersectionSet = setA.intersection(setB);
console.log([...intersectionSet]); // => [3, 4, 5]
// 差集合 (A-B): セットAからセットBに含まれる要素を除いた集合
const differenceSet = setA.difference(setB);
console.log([...differenceSet]); // => [1, 2]
// 対称差集合 (A△B): セットAとセットBのどちらか一方にのみ存在する要素の集合
const symmetricDifferenceSet = setA.symmetricDifference(setB);
console.log([...symmetricDifferenceSet]); // => [1, 2, 6, 7]
// 部分集合の判定
console.log(new Set([3, 4]).isSubsetOf(setA)); // => true
// 上位集合の判定
console.log(setA.isSupersetOf(new Set([3, 4]))); // => true
// 互いに素(共通要素がない)の判定
console.log(setA.isDisjointFrom(new Set([6, 7]))); // => false
Import Attributesの追加
概要
ES2025で標準化されたImport Attributesは、JSONファイルなどのJavaScript以外のファイルをインポートする際の属性を指定する構文です。
変更されたページ
変更内容
// 静的インポートの例
import jsonData from "./data.json" with { type: "json" };
console.log(jsonData.name); // => "John"
console.log(jsonData.age); // => 30
// Dynamic Import で属性を指定
const jsonData = await import("./data.json", { with: { type: "json" } });
その他の追加
Dynamic Import (ES2020)
動的にモジュールをインポートするimport()
関数の説明を追加しました。
// async/await を使った Dynamic Import
async function loadModule() {
try {
const module = await import("./math-utils.js");
console.log(module.add(1, 2)); // => 3
} catch (error) {
console.error(error);
}
}
Array.prototype.flatMap
(ES2019)
配列の変換と平坦化を同時に行うflatMap
メソッドの説明を追加しました。
const sentences = ["Hello World", "Good Morning"];
const words = sentences.flatMap(sentence => sentence.split(" "));
console.log(words); // ["Hello", "World", "Good", "Morning"]
おわりに
jsprimerでは毎年更新していけるような仕組み作りの一環としてJavaScript Primer - Open Collectiveでの支援を募集しています。サイト上へのロゴの掲載やリリースノートへのロゴの掲載などの特典を含んでいます。
また、文章の修正やコード的なコミットはいつでも歓迎しています!
毎年1月頃には、次のECMAScriptのリリースに合わせた計画を立て始めています。
この時期になると次のリリースに向けてのIssueが立ち始めるので、興味がある人はリポジトリをWatchしてください!
- asciidwango/js-primer:
JavaScript Primer - 迷わないための入門書
- JavaScript PrimerのES2025対応を手伝ってくれるContributorとSponsorを募集しています | Web Scratch
個人的なGitHub Sponsorsも募集しています。こちらも合わせてご支援いただけると嬉しいです。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。