版本发布 4
# JavaScript Primer v7.0.0: ECMAScript 2025対応 JavaScript Primer v7.0.0リリース 🎉 v7では、ECMAScript 2025の対応と、イテレータ・ジェネレータの章を新規追加しました。 ## 主な変更点 ### イテレータとジェネレータ [ES2025] イテレータとジェネレータについて解説する新しい章を追加しました。 ES2025で追加されたIterator Helpersも含めて、JavaScriptにおけるイテレータとジェネレータについて解説しています。 ```javascript // Iterator.fromを使った例 const iterator = Iterator.from([1, 2, 3]) .map(x => x * 2) .filter(x => x > 2); for (const value of iterator) { console.log(value); // 4, 6 } ``` 関連章: [イテレータとジェネレータ](https://jsprimer.net/basic/iterator-generator/)(新規追加) ### RegExp.escape メソッド [ES2025] 正規表現で特殊な意味を持つ文字を安全にエスケープするメソッドが追加されました。 文字列の中に正規表現として意味を持つ特殊文字が含まれていても、自動的にエスケープできます。 ```javascript const escaped = RegExp.escape("+"); console.log(escaped); // \+ ``` 関連章: [文字列](https://jsprimer.net/basic/string/) ### Set Methods [ES2025] Setオブジェクトに集合演算を行うメソッドが追加されました。 数学的な集合操作を簡潔に記述できるようになります。 ```javascript const setA = new Set([1, 2, 3]); const setB = new Set([2, 3, 4]); // 積集合 setA.intersection(setB); // Set { 2, 3 } // 和集合 setA.union(setB); // Set { 1, 2, 3, 4 } // 差集合 setA.difference(setB); // Set { 1 } ``` 関連章: [Map/Set](https://jsprimer.net/basic/map-and-set/) ### Import Attributes [ES2025] JavaScript以外のファイル(JSON等)をモジュールとして読み込む構文が標準化されました。 ```javascript // Import Attributes import data from "./data.json" with { type: "json" }; ``` 関連章: [ECMAScriptモジュール](https://jsprimer.net/basic/module/) ### Dynamic Import [ES2020] Import Attributesの対応に合わせて、Dynamic Importの解説を追加しました。 動的にモジュールを読み込む機能の解説を追加しました。 ```javascript // Dynamic Import const module = await import("./module.js"); ``` 関連章: [ECMAScriptモジュール](https://jsprimer.net/basic/module/) ### Array.prototype.flatMap メソッド [ES2019] `Iterator.prototype.flatMap`メソッドに合わせて、配列の`flatMap`メソッドも解説を追加しました。 配列のmapとflatを組み合わせた処理を効率的に行えるメソッドです。 ```javascript const nested = [[1], [2, 3], [4]]; const result = nested.flatMap(x => x.map(n => n * 2)); // [2, 4, 6, 8] ``` 関連章: [配列](https://jsprimer.net/basic/array/) #### JavaScript Primerへの支援 今回のv7リリースにおいては、次の方々にご支援いただきました! **Gold Sponsors** [](https://opencollective.com/jsprimer#sponsors) **Supporters** [](https://opencollective.com/jsprimer#backers) JavaScript Primerは、Open Collectiveを通じてプロジェクトの更新に関わる資金を募っています。 継続的な更新のために、ぜひご支援をお願いします。 - [JavaScript Primer - Open Collective](https://opencollective.com/jsprimer) 詳細は、[JavaScript Primerスポンサー](https://jsprimer.net/intro/sponsors/)を参照してください。 また、jsprimerへのOpen Collectiveを通じて、Contributorに対して支払い または 好きな別のオープンソースプロジェクトへ寄付を行う仕組みを作っています。 詳細は、[Contributing Expenses Policy](https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING_EXPENSE.md)を参照してください。 ## 関連Issue/PR ### ES2025新機能の対応 1. **RegExp.escape** [ES2025] (#1784) by @azu - PR: #1837 - 正規表現パターンで使う特殊文字をエスケープするメソッド 3. **Import Attributes** [ES2025] (#1783) by @lef237 - JavaScript以外のファイル(JSON等)をモジュールとして読み込む構文 4. **Set Methods** [ES2025] (#1784) by @3w36zj6 - PR: #1804 - Setの集合演算メソッドの追加(intersection, union, difference等) 5. **Iterator Helpers & イテレータとジェネレータの章** [ES2025] (#1782) by @azu - PR: #1825 - イテレータとジェネレータの章を新規追加 ### その他の対応機能 ES2025以前に追加された機能ですが、ES2025で関連する内容を追加しました。 6. **Dynamic Import** [ES2020] (#1792) by @3w36zj6 - Import Attributesと合わせて、動的インポートの解説を追加 7. **Array.prototype.flatMap** [ES2019] by @azu - PR: #1836 - 配列の章にflatMapメソッドの解説を追加
JavaScript Primer v6.0.0をリリースしました 🎉 jsprimer v6では、ECMAScript 2024の対応とNode.jsのユースケースを新たに増えた`node:util`の`parseArg`関数や`node:test`を使うように書き直しています。 ## 変更のサマリ - [ErrorCause への対応](https://github.com/asciidwango/js-primer/pull/1732) by @himanoa - [改訂 2 版の電子版へのリンクを追加](https://github.com/asciidwango/js-primer/pull/1755) by @azu - [Map.groupBy 静的メソッドの追加](https://github.com/asciidwango/js-primer/pull/1751) by @azu - [Object.groupBy 静的メソッドを追加](https://github.com/asciidwango/js-primer/pull/1749) by @azu - [Stage 2.7 を追加](https://github.com/asciidwango/js-primer/pull/1743) by @azu - [mocha を node:test に変更する](https://github.com/asciidwango/js-primer/pull/1737) by @windchime-yk - [update to marked@14](https://github.com/asciidwango/js-primer/pull/1760) by @azu # JavaScript Primer Sponsors JavaScript Primer(jsprimer)では、Open Collectiveを通じてプロジェクトの更新に関わる資金を募っています。 - [JavaScript Primer - Open Collective](https://opencollective.com/jsprimer) 今回のv6リリースにおいては、次の方々にご支援いただきました!  [株式会社コクチョウ](https://kokuchou.net/)さんは、Yearly Gold Sponsorとしてご支援いただいています。 ご支援ありがとうございます! JavaScript Primerスポンサーについては、次のページを参照してください。 - [JavaScript Primerスポンサー · JavaScript Primer #jsprimer](https://jsprimer.net/intro/sponsors/) また、ご支援いただいた資金は、jsprimerにcontributionしてくれた方へ還元できるような仕組みを設計しました。 次回からは、この仕組みを回していけるようにしたいです。 - [Contributing Expenses Policy](https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING_EXPENSE.md) # JavaScript Primer v6.0.0の変更点 JavaScript Primer v6.0.0の変更点について紹介します。 # [ErrorCauseへの対応 by himanoa · Pull Request #1732](https://github.com/asciidwango/js-primer/pull/1732) ## 概要 ES2022で追加された`Error`の`cause`オプションは、エラーのスタックトレースを改善するために追加されました。 `cause`オプションを使うことで、エラーを再度投げ直す場合に、元のエラーのスタックトレースを維持しながら新しいエラーを投げることができます。 ## 変更されたページ - [例外処理 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/error-try-catch/) ## 変更内容 - `ErrorCause`オブジェクトの説明を追加 - ウェブ版のREPLをErrorCauseに対応 # [改訂2版の電子版へのリンクを追加 by azu · Pull Request #1755](https://github.com/asciidwango/js-primer/pull/1755) 電子版の改訂2版が公開されたので、リンクを追加しました。 - [JavaScript Primer 改訂2版【委託】 - 達人出版会](https://tatsu-zine.com/books/javascript-primer-2ed) # [`Map.groupBy`静的メソッドの追加 by azu · Pull Request #1751](https://github.com/asciidwango/js-primer/pull/1751) ## 概要 ES2024では、配列の要素をグループ分けしたマップを作成する`Map.groupBy`静的メソッドが追加されています。 `Map.groupBy`静的メソッドは`Object.groupBy`静的メソッドとよく似たメソッドです。 `Object.groupBy`静的メソッドは配列からオブジェクトを作成するのに対して、`Map.groupBy`静的メソッドは配列からマップを作成します。 `Map.groupBy`静的メソッドも元々は、`Array.prototype.groupToMap`メソッドという配列のメソッドとして提案されていましたが、`Object.groupBy`静的メソッドに合わせる形で`Map.groupBy`静的メソッドに変更されました。 ## 変更されたページ - [Map/Set · JavaScript Primer #jsprimer](https://jsprimer.net/basic/map-and-set/) ## 変更内容 - `Map.groupBy`静的メソッドの説明を追加 ## 関連 - #1716 - #1749 # [`Object.groupBy` 静的メソッドを追加 by azu · Pull Request #1749](https://github.com/asciidwango/js-primer/pull/1749) ## 概要 ES2024では、配列の要素をグループ分けしたオブジェクトを作成する`Object.groupBy`静的メソッドが追加されています。 配列の要素をグループ化を簡潔に書けるようになっています。 `Array.prototype.groupBy`のようなArrayのメソッドではないのは、既存のprototype拡張をしていたライブラリとの競合を避けるためです。 最初は、`Array.prototype.groupBy`メソッドとして提案されていましたが、既存のウェブサイトとの互換性の問題が見つかったため、`Object.groupBy`静的メソッドに変更されました。 ## 変更されたページ - [配列 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/array/) ## 変更内容 - `Object.groupBy`静的メソッドの説明を追加 ## 関連 - #1716 # [Stage 2.7を追加 by azu · Pull Request #1743](https://github.com/asciidwango/js-primer/pull/1743) ## 概要 ECMAScript ProposalのStage 2.7を追加しました ブラウザが実装しはじめて見つかる問題などによりステージ2と3を行き来してしまうことがあったためです。 そのため、実装の前のテストと検証のためのステージとして`2.7`が追加されました。 ## 変更されたページ - [ECMAScript · JavaScript Primer #jsprimer](https://jsprimer.net/basic/ecmascript/) ## 関連 - #1713 # Node.js CLIのアップデート Node.jsの標準パッケージがカバーする範囲が広がったため、Node.jsのユースケースを大幅に書き換えました。 ## [commanderパッケージ を `node:util` の `parseArg` に変更 by azu · Pull Request #1757](https://github.com/asciidwango/js-primer/pull/1757) ### 概要 `commander`パッケージは使わずに、Node.jsの標準モジュールである`node:util`の`parseArg`関数を使うように変更しています。 ### 変更されたページ - [Node.jsでCLIアプリ · JavaScript Primer #jsprimer](https://jsprimer.net/use-case/nodecli/) ### 変更内容 - [Node.jsでHello World](https://jsprimer.net/use-case/nodecli/helloworld/) - "Node.jsプロジェクトのセットアップ "を追加 (`package.json`の作成) - [コマンドライン引数を処理する](https://jsprimer.net/use-case/nodecli/argument-parse/) - `commander` を `node:util` の `parseArgs`関数に変更 - `デフォルト設定を定義する {#declare-default}`セクションは削除(defaultオプションでいいため) - `--gfm`の呼び方をフラグに統一(オプションと呼んでる場所があった) - [MarkdownをHTMLに変換する](https://jsprimer.net/use-case/nodecli/md-to-html/) - `npm install` の説明を移動 - [[コラム] node: prefix ](https://jsprimer.net/use-case/nodecli/md-to-html/#node-prefix)を追加 - 本文は `node:` に統一したので、逆に本文にはいらなくなった ### 関連 - #1698 ## [mochaを`node:test`に変更する by windchime-yk · Pull Request #1737](https://github.com/asciidwango/js-primer/pull/1737) ### 概要 テストを[Mocha](https://mochajs.org/)から標準モジュールの`node:test`に変更しました ### 変更されたページ - [ユニットテストを記述する · JavaScript Primer #jsprimer](https://jsprimer.net/use-case/nodecli/refactor-and-unittest/) ### 変更内容 - [Mocha](https://mochajs.org/)から`node:test`に変更 - [Test runner](https://nodejs.org/api/test.html)では、[デフォルトで`test`フォルダが指定されている](https://nodejs.org/api/test.html#running-tests-from-the-command-line)ことも加味して`node --test`でテストを実行するように変更 ## [update to marked@14 by azu · Pull Request #1760](https://github.com/asciidwango/js-primer/pull/1760) ### 概要 `marked`パッケージを`14`にアップデートしました。 ### 変更されたページ - [MarkdownをHTMLに変換する · JavaScript Primer #jsprimer](https://jsprimer.net/use-case/nodecli/md-to-html/) ### 変更内容 - `marked@4`から`marked@14`にアップデート - `<h1 id=xxx>` は付与されなくなったので出力から削除 - auto linkについては言及してるが、idについては言及してないのでコードのみの変更 ## おわりに jsprimerでは毎年更新していけるような仕組み作りの一貫として[JavaScript Primer - Open Collective](https://opencollective.com/jsprimer)での支援を募集しはじめました。サイト上へのロゴの掲載やリリースノートへのロゴの掲載などの特典を含んでいます。 - [JavaScript Primerスポンサー · JavaScript Primer #jsprimer](https://jsprimer.net/intro/sponsors/) また、文章の修正やコード的なコミットはいつでも歓迎しています! - [Contribution Guide](https://github.com/asciidwango/js-primer/blob/master/CONTRIBUTING.md) - [文章の間違いに気づいたら · JavaScript Primer #jsprimer](https://jsprimer.net/intro/feedback/)
# v5.0.0: ES2023 JavaScript Primer v5.0.0では、2023年6月27日にリリースされたECMAScript 2023(ES2023)をサポートしています。 - [Release ES2023 · tc39/ecma262](https://github.com/tc39/ecma262/releases/tag/es2023) - [Ecma International approves new standards - Ecma International](https://www.ecma-international.org/news/ecma-international-approves-new-standards-at-the-125th-general-assembly-27-june-2023/) ## [Change Array by copy](https://github.com/tc39/proposal-change-array-by-copy) ### 概要 配列の破壊的なメソッドである`splice`、`reverse`、`sort`に対して、 ES2023では非破壊的なバージョンである`toSpliced`、`toReversed`、`toSorted`が追加されました。 また、配列への代入(`array[index] = item`)という破壊的な処理に対して、`with`という非破壊的なメソッドが追加されました。 ### 変更されたページ - [配列 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/array/) ### 変更内容 - 破壊的なメソッドと非破壊的なメソッド のセクション - 追加された`toSpliced`、`toReversed`、`toSorted`、`with`メソッドの解説の追加 - 破壊的な方法と非破壊的な方法の対応関係のテーブルを追加 | 破壊的な方法 | 非破壊な方法 | | ---------------------------------------- | ------------- | | `array[index] = item` | [`Array.prototype.with`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/with)<sup>[ES2023]</sup> | | [`Array.prototype.pop`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/pop) | [`array.slice(0, -1)`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)と[`array.at(-1)`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/at)<sup>[ES2022]</sup> | | [`Array.prototype.push`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/push) | `[...array, item]`<sup>[ES2015]</sup> | | [`Array.prototype.splice`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/splice) | [`Array.prototype.toSpliced`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/toSpliced)<sup>[ES2023]</sup> | | [`Array.prototype.reverse`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse) | [`Array.prototype.toReversed`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/toReversed)<sup>[ES2023]</sup> | | [`Array.prototype.sort`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) | [`Array.prototype.toSorted`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted)<sup>[ES2023]</sup> | | [`Array.prototype.shift`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/shift) | [`array.slice(1)`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)と[`array.at(0)`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/at)<sup>[ES2022]</sup> | | [`Array.prototype.unshift`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift) | `[item, ...array]`<sup>[ES2015]</sup> | | [`Array.prototype.copyWithin`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/copyWithin)<sup>[ES2015]</sup> | なし | | [`Array.prototype.fill`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill)<sup>[ES2015]</sup> | なし | 配列のメソッドを非破壊的なメソッド(Immutable)と破壊的なメソッド(Mutable)に分けると、次のようになります。  ### 関連 - [ES2023: Change Array by copy · Issue #1667](https://github.com/asciidwango/js-primer/issues/1667) ## [`Array.prototype.{findLast, findLastIndex}`](https://github.com/tc39/proposal-array-find-from-last) ### 概要 ES2023では、`Array.prototype.findIndex`と`Array.prototype.find` に対応するメソッドとして、 `Array.prototype.findLastIndex` と `Array.prototype.findLast`が追加されました。 それぞれ `findIndex`と`find` と同じ使い方ですが、末尾から探索した結果を返すメソッドになっています。 ### 変更されたページ - [配列 · JavaScript Primer #jsprimer](https://jsprimer.net/basic/array/) ### 変更点 - ES2023で追加された `Array.prototype.findLastIndex` と `Array.prototype.findLast` の対応 - `Array.prototype.lastIndexOf` のサンプルコードを追加 ### 関連 - [ES2023: proposal-array-find-from-last · Issue #1665](https://github.com/asciidwango/js-primer/issues/1665) ## [Symbols as WeakMap keys](https://github.com/tc39/proposal-symbols-as-weakmap-keys) ### 概要 ES2022までは、WeakMapのキーとWeakSetの値にはオブジェクトのみが指定可能でした。 これは弱い参照をGCで解放するために、キーは一意な値のみが指定可能という制限からくるものでした。 Symbolも一意な値となるため、ES2023ではオブジェクトに加えてSymbolも指定できるように仕様が変更されました。 - [tc39/proposal-symbols-as-weakmap-keys: Permit Symbols as keys in WeakMaps, entries in WeakSets and WeakRefs, and registered in FinalizationRegistries](https://github.com/tc39/proposal-symbols-as-weakmap-keys) ### 変更されたページ - [Map/Set · JavaScript Primer #jsprimer](https://jsprimer.net/basic/map-and-set/) ### 変更内容 - WeakMapのキーに指定可能なものとしてSymbolを追加 - WeakSetの値に指定可能なものとしてSymbolを追加 ### 関連 - [ES2023: Symbol as a Key #1666](https://github.com/asciidwango/js-primer/issues/1666) ## その他のProposal その他にもES2023にマージされたProposalとしてHashbang Grammarがあります。 Hashbang Grammarは`#!`から始まる最初の行をコメントとして扱う仕様ですが、Node.jsなどの実行環境との相互運用性を考慮して、ES2023で仕様が変更されました。 jsprimerでは特に取り扱っていませんが、興味がある方は次のIssueを参照してください。 - [ES2023: Hashbang Grammar #1687](https://github.com/asciidwango/js-primer/issues/1687) ## ライセンスの変更 今までのjsprimerのライセンスは次のとおりでした。 - ソースコード: MITライセンス - 文章: [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/deed.ja) v5.0.0からはjsprimerのライセンスを次のように変更します。 - ソースコード: MITライセンス(そのまま) - 文章: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.ja) CC BY-NCでは商用利用を禁止する条項がありますが、 CC BYにはこの条項は含まれません。 | 行為 | CC BY | CC BY-NC | | -------------- | ----- | -------- | | 複製 | OK | OK | | 頒布 | OK | OK | | 展示 | OK | OK | | 実演 | OK | OK | | 改変 | OK | OK | | 著作権者の表示 | 必要 | 必要 | | **非営利目的** | OK | NG | 元から、教材などとしての利用は許可していましたが、商用かどうかの判断が難しいものになっていました。 今回の変更で、著作権者表示をすれば商用でも利用可能なライセンスになっています。 これにより、jsprimerの文章も、より自由に使いやすくなります。 変更の詳細についてはIssueを参照してください。 - Issue: [文章のライセンスをCC BYに変更 #1690 ](https://github.com/asciidwango/js-primer/issues/1690) - PR: [CC BY-NC → CC BYにライセンスを変更 #1691](https://github.com/asciidwango/js-primer/pull/1691) ## Open Collectiveでjsprimerを支援できるようになりました BabelやPrettierなども利用している[Open Collective](https://opencollective.com/)というサービスを使い、JavaScript Primerというプロジェクトを金銭的に支援できるようになりました。 次のCollectiveのページから支援できるようになっています。 - [JavaScript Primer - Open Collective](https://opencollective.com/jsprimer) このOpen Collectiveでの支援は、主に企業ユーザーを対象にしています。 支援することでWebサイトや次回(ES2024)のリリースノートにスポンサー表示ができるようになります。 また、"推しページ"を設定できるようにする予定で、<https://jsprimer.net/>の特定のページにメッセージ(書籍のポップをイメージ)を出せるようにする予定です。 JavaScript Primerは変化を前提にした書籍のプロジェクトであるため、毎年のECMAScriptのリリースに合わせて内容を改訂しています。 jsprimerは変化に対応できる基礎を身につけられること、またそれを迷わずに学べるようにすることを目的にしたプロジェクトです。 変化に対応するには、書籍自体も変化に対応する必要があります。 更新に継続的に行うのに必要なリソースとしてヒト、カネ、モノがあります。 Open Collectiveは、プロジェクトに対して金銭的な支援をすることができるサービスです。 単純に受け取るだけではなく、プロジェクトにContributeしてくれた方に還元することもできます。 それらのやりとりがオープンに行えるのがOpen Collectiveの特徴です。 ざっくりとした試算では、jsprimerの毎年の更新にかかる必要は年間で687,840円ぐらいです。 詳細は次の記事にまとめています。 - [JavaScript Primer 改訂2版をリリースしました!/JavaScript Primerはなぜ更新され続けるのか? | Web Scratch](https://efcl.info/2023/06/09/jsprimer-v2/) [JavaScript Primer - Open Collective](https://opencollective.com/jsprimer)での支援方法として、[Yearly Gold Sponsors](https://opencollective.com/jsprimer/contribute/nian2-jian4-gold-sponsors-61987)(年間)と[Monthly Gold Sponsors](https://opencollective.com/jsprimer/contribute/gold-sponsors-61988)(月間)を用意しています。 jsprimerは年ごとの更新なので、[Yearly Gold Sponsors](https://opencollective.com/jsprimer/contribute/nian2-jian4-gold-sponsors-61987)がわかりやすいかと思います。 まだ、どういう形が最適なのかはわかっていないため、Contributeしてくれる方(金銭的な支援もContributeです)と考えながら形を作っていけければと思います。 次のページに、このリリースについてのDiscussionを用意しているので、是非で意見を聞かせてください! - [ ] Discussionページ Open Collectiveについてはまだ検討中の部分も多いので、まずは公開するところから始めています。 これからも更新されていくと思うので、更新情報を知りたい方は、リポジトリをWatchしてみてください。 [](https://github.com/asciidwango/js-primer/watchers) > https://github.com/asciidwango/js-primer からWatchボタンで、Releaseの更新情報を受け取れます。 また、メールで通知を受け取りたい方は、次のフォームからメールアドレスを登録すると更新情報を受け取れます。 - <https://github.us13.list-manage.com/subscribe/post?u=fc41e11a2b9dc6f05350e0de0&id=7ab1594ae8>
「JavaScript Primer 改訂2版 迷わないための入門書」のスナップショットとなるタグです。 書籍版は次のサイトなどから購入できます。 - KADOKAWA: [「JavaScript Primer 改訂2版 迷わないための入門書」azu [PC・理工科学書] - KADOKAWA](https://www.kadokawa.co.jp/product/302303004295/) - Amazon: [JavaScript Primer 改訂2版 迷わないための入門書 | azu, Suguru Inatomi |本 | 通販 | Amazon](https://www.amazon.co.jp/dp/4048931105/) - 楽天: [楽天ブックス: JavaScript Primer 改訂2版 迷わないための入門書 - azu - 9784048931106 : 本](https://books.rakuten.co.jp/rb/17509001/?scid=af_pc_etc&sc2id=af_104_0_10001813) - ヨドバシ: [ヨドバシ.com - JavaScript Primer 改訂2版 迷わないための入門書 [単行本] 通販【全品無料配達】](https://www.yodobashi.com/product/100000009003715263/)