ES6を探る
ホームページ
この本のサポートをお願いします: 購入する (PDF, EPUB, MOBI) または 寄付する
(広告です。ブロックしないでください。)

目次

    1. この本について知っておくべきこと
      1. 対象読者: JavaScriptプログラマー
      2. なぜこの本を読むべきか?
      3. この本の読み方
      4. この本の情報源
      5. 用語集
      6. 表記規則
      7. GitHubのデモコード
      8. サイドバー
      9. 脚注
    2. 序文
    3. まえがき
    4. 謝辞
    5. 著者について
  1. I 背景
    1. 1. ECMAScript 6 (ES6)について
      1. 1.1 TC39 (Ecma技術委員会39)
      2. 1.2 ECMAScript 6の設計方法
      3. 1.3 JavaScriptとECMAScript
      4. 1.4 ES6へのアップグレード
      5. 1.5 ES6の目標
      6. 1.6 ES6機能のカテゴリ
      7. 1.7 ECMAScriptの簡単な歴史
    2. 2. FAQ: ECMAScript 6
      1. 2.1 現在ES6をどのように使用できますか?
      2. 2.2 ECMAScript 6はECMAScript 2015という名称になったのではありませんか?
      3. 2.3 ECMAScript 5コードをECMAScript 6に移行するにはどうすればよいですか?
      4. 2.4 まだECMAScript 5を学ぶ意味はありますか?
      5. 2.5 ES6は肥大化していますか?
      6. 2.6 ES6の仕様は非常に大きいのではありませんか?
      7. 2.7 ES6には配列内包表記がありますか?
      8. 2.8 ES6は静的型付けですか?
    3. 3. One JavaScript: ECMAScript 6でのバージョニングの回避
      1. 3.1 バージョニング
      2. 3.2 厳格モードとECMAScript 6
      3. 3.3 ES6における破壊的変更
      4. 3.4 結論
      5. 3.5 参考文献
    4. 4. ES6のコア機能
      1. 4.1 varからconst/let
      2. 4.2 即時実行関数式からブロックへ
      3. 4.3 文字列の連結からテンプレートリテラルへ
      4. 4.4 関数式からアロー関数へ
      5. 4.5 複数の戻り値の処理
      6. 4.6 forからforEach()、そしてfor-of
      7. 4.7 パラメータのデフォルト値の処理
      8. 4.8 名前付きパラメータの処理
      9. 4.9 argumentsからレストパラメータへ
      10. 4.10 apply()からスプレッド演算子(...)へ
      11. 4.11 concat()からスプレッド演算子(...)へ
      12. 4.12 オブジェクトリテラル内の関数式からメソッド定義へ
      13. 4.13 コンストラクタからクラスへ
      14. 4.14 カスタムエラーコンストラクタから`Error`のサブクラスへ
      15. 4.15 オブジェクトからマップへ
      16. 4.16 新しい文字列メソッド
      17. 4.17 新しい配列メソッド
      18. 4.18 CommonJSモジュールからES6モジュールへ
      19. 4.19 次にすべきこと
  2. II データ
    1. 5. 新しい数値とMath機能
      1. 5.1 概要
      2. 5.2 新しい整数リテラル
      3. 5.3 新しい静的`Number`プロパティ
      4. 5.4 新しい`Math`機能
      5. 5.5 FAQ:数値
    2. 6. 新しい文字列機能
      1. 6.1 概要
      2. 6.2 Unicodeコードポイントエスケープ
      3. 6.3 文字列補間、複数行文字列リテラル、およびraw文字列リテラル
      4. 6.4 文字列の反復処理
      5. 6.5 コードポイントの数値
      6. 6.6 包含の確認
      7. 6.7 文字列の繰り返し
      8. 6.8 正規表現の作業をパラメータに委任する文字列メソッド
      9. 6.9 リファレンス:新しい文字列メソッド
    3. 7. シンボル
      1. 7.1 概要
      2. 7.2 新しいプリミティブ型
      3. 7.3 シンボルを使用して概念を表す
      4. 7.4 プロパティのキーとしてのシンボル
      5. 7.5 シンボルを他のプリミティブ型に変換する
      6. 7.6 シンボルのラッパーオブジェクト
      7. 7.7 シンボルでレルムを越える
      8. 7.8 FAQ:シンボル
      9. 7.9 既知のシンボルのスペル:なぜ`Symbol.iterator`であり、`Symbol.ITERATOR`(など)ではないのですか?
      10. 7.10 シンボルAPI
    4. 8. テンプレートリテラル
      1. 8.1 概要
      2. 8.2 はじめに
      3. 8.3 タグ付きテンプレートリテラルの使用例
      4. 8.4 タグ関数の 구현
      5. 8.5 FAQ:テンプレートリテラルとタグ付きテンプレートリテラル
    5. 9. 変数とスコープ
      1. 9.1 概要
      2. 9.2 letとconstによるブロックスコープ
      3. 9.3 `const`は不変変数を作成します
      4. 9.4 一時的デッドゾーン
      5. 9.5 ループヘッドの`let`と`const`
      6. 9.6 変数としてのパラメータ
      7. 9.7 グローバルオブジェクト
      8. 9.8 関数宣言とクラス宣言
      9. 9.9 コーディングスタイル:`const`対`let`対`var`
    6. 10. 分割代入
      1. 10.1 概要
      2. 10.2 背景:データの構築とデータの抽出
      3. 10.3 分割代入のパターン
      4. 10.4 パターンはどのように値の内部にアクセスしますか?
      5. 10.5 デフォルト値
      6. 10.6 その他のオブジェクト分割代入機能
      7. 10.7 その他の配列分割代入機能
      8. 10.8 変数だけでなく、もっと多くのものに代入できます
      9. 10.9 分割代入の落とし穴
      10. 10.10 分割代入の例
      11. 10.11 分割代入アルゴリズム
    7. 11. パラメータ処理
      1. 11.1 概要
      2. 11.2 分割代入としてのパラメータ処理
      3. 11.3 パラメータのデフォルト値
      4. 11.4 レストパラメータ
      5. 11.5 名前付きパラメータのシミュレーション
      6. 11.6 パラメータ処理における分割代入の例
      7. 11.7 コーディングスタイルのヒント
      8. 11.8 スプレッド演算子(...
  3. III モジュール性
    1. 12. ECMAScript 6の呼び出し可能エンティティ
      1. 12.1 概要
      2. 12.2 ES6での呼び出し方法
      3. 12.3 呼び出し可能エンティティの使用に関する推奨事項
      4. 12.4 ES6呼び出し可能エンティティの詳細
      5. 12.5 ES5とES6でのディスパッチメソッド呼び出しとダイレクトメソッド呼び出し
      6. 12.6 関数の`name`プロパティ
      7. 12.7 FAQ:呼び出し可能エンティティ
    2. 13. アロー関数
      1. 13.1 概要
      2. 13.2 `this`が原因で、従来の関数はメソッド以外の関数としては不適切です
      3. 13.3 アロー関数の構文
      4. 13.4 レキシカル変数
      5. 13.5 構文の落とし穴
      6. 13.6 即時実行アロー関数
      7. 13.7 アロー関数と`bind()`
      8. 13.8 アロー関数と通常の関数
      9. 13.9 FAQ:アロー関数
    3. 14. クラス以外の新しいOOP機能
      1. 14.1 概要
      2. 14.2 オブジェクトリテラルの新しい機能
      3. 14.3 `Object`の新しいメソッド
      4. 14.4 ES6でのプロパティのトラバース
      5. 14.5 プロパティの割り当てと定義
      6. 14.6 ECMAScript 6の`__proto__`
      7. 14.7 ECMAScript 6の列挙可能性
      8. 14.8 既知のシンボルによる基本的な言語操作のカスタマイズ
      9. 14.9 FAQ:オブジェクトリテラル
    4. 15. クラス
      1. 15.1 概要
      2. 15.2 要点
      3. 15.3 クラスのプライベートデータ
      4. 15.4 シンプルなミックスイン
      5. 15.5 クラスの詳細
      6. 15.6 サブクラス化の詳細
      7. 15.7 種パターン
      8. 15.8 クラスの長所と短所
      9. 15.9 FAQ:クラス
      10. 15.10 クラスの今後の展望
      11. 15.11 参考文献
    5. 16. モジュール
      1. 16.1 概要
      2. 16.2 JavaScriptのモジュール
      3. 16.3 ES6モジュールの基本
      4. 16.4 インポートとエクスポートの詳細
      5. 16.5 ECMAScript 6モジュールローダーAPI
      6. 16.6 ブラウザでのES6モジュールの使用
      7. 16.7 詳細:エクスポートのビューとしてのインポート
      8. 16.8 ES6モジュールの設計目標
      9. 16.9 FAQ:モジュール
      10. 16.10 ECMAScript 6モジュールの利点
      11. 16.11 参考文献
  4. IV コレクション
    1. 17. for-ofループ
      1. 17.1 概要
      2. 17.2 `for-of`ループの紹介
      3. 17.3 落とし穴:`for-of`は反復可能な値でのみ機能します
      4. 17.4 反復変数:`const`宣言と`var`宣言
      5. 17.5 既存の変数、オブジェクトプロパティ、および配列要素を使用した反復処理
      6. 17.6 分割代入パターンを使用した反復処理
    2. 18. 新しい配列機能
      1. 18.1 概要
      2. 18.2 新しい静的`Array`メソッド
      3. 18.3 新しい`Array.prototype`メソッド
      4. 18.4 ES6と配列の穴
      5. 18.5 concat() によるオブジェクトのスプレッド方法の設定 (Symbol.isConcatSpreadable)
      6. 18.6 配列インデックスの数値範囲
    3. 19. マップとセット
      1. 19.1 概要
      2. 19.2 Map
      3. 19.3 WeakMap
      4. 19.4 Set
      5. 19.5 WeakSet
      6. 19.6 FAQ: マップとセット
    4. 20. 型付き配列
      1. 20.1 概要
      2. 20.2 はじめに
      3. 20.3 ArrayBuffer
      4. 20.4 型付き配列
      5. 20.5 DataView
      6. 20.6 型付き配列をサポートするブラウザ API
      7. 20.7 拡張例: JPEG SOF0 デコーダー
      8. 20.8 利用可能性
    5. 21. イテラブルとイテレーター
      1. 21.1 概要
      2. 21.2 イテラビリティ
      3. 21.3 イテラブルなデータソース
      4. 21.4 反復言語構造
      5. 21.5 イテラブルの実装
      6. 21.6 イテラブルのその他の例
      7. 21.7 FAQ: イテラブルとイテレーター
      8. 21.8 ECMAScript 6 イテレーションプロトコルの詳細
    6. 22. ジェネレーター
      1. 22.1 概要
      2. 22.2 ジェネレーターとは?
      3. 22.3 イテレーターとしてのジェネレーター (データ生成)
      4. 22.4 オブザーバーとしてのジェネレーター (データ消費)
      5. 22.5 コルーチンとしてのジェネレーター (協調的マルチタスク)
      6. 22.6 ジェネレーターの例
      7. 22.7 イテレーション API 内の継承 (ジェネレーターを含む)
      8. 22.8 スタイルに関する考慮事項: アスタリスクの前後の空白
      9. 22.9 FAQ: ジェネレーター
      10. 22.10 まとめ
      11. 22.11 参考文献
  5. V 標準ライブラリ
    1. 23. 正規表現の新機能
      1. 23.1 概要
      2. 23.2 新しいフラグ /y (スティッキー)
      3. 23.3 新しいフラグ /u (Unicode)
      4. 23.4 新しいデータプロパティ flags
      5. 23.5 RegExp() をコピーコンストラクターとして使用可能
      6. 23.6 正規表現メソッドに委譲する文字列メソッド
    2. 24. 非同期プログラミング (バックグラウンド)
      1. 24.1 JavaScript コールスタック
      2. 24.2 ブラウザイベントループ
      3. 24.3 結果の非同期受信
      4. 24.4 今後の展望
      5. 24.5 参考文献
    3. 25. 非同期プログラミングのための Promise
      1. 25.1 概要
      2. 25.2 はじめに: Promise
      3. 25.3 最初の例
      4. 25.4 Promise を理解する 3 つの方法
      5. 25.5 Promise の作成と使用
      6. 25.6
      7. 25.7 Promise を作成する他の方法
      8. 25.8 Promise のチェーン
      9. 25.9 Promise チェーンのよくある間違い
      10. 25.10 エラー処理のヒント
      11. 25.11 Promise の合成
      12. 25.12 2 つの便利な追加 Promise メソッド
      13. 25.13 Node.js: コールバックベースの同期関数を Promise で使用する
      14. 25.14 ES6 互換 Promise ライブラリ
      15. 25.15 次のステップ: ジェネレーターによる Promise の使用
      16. 25.16 Promise の詳細: 簡単な実装
      17. 25.17 Promise の利点と制限
      18. 25.18 リファレンス: ECMAScript 6 Promise API
      19. 25.19 参考文献
  6. VI その他
    1. 26. ES6 における Unicode
      1. 26.1 ES6 では Unicode のサポートが向上
      2. 26.2 ES6 におけるエスケープシーケンス
    2. 27. 末尾呼び出し最適化
      1. 27.1 末尾呼び出し最適化とは?
      2. 27.2 関数呼び出しが末尾位置にあるかどうかの確認
      3. 27.3 末尾再帰関数
    3. 28. プロキシによるメタプログラミング
      1. 28.1 概要
      2. 28.2 プログラミングとメタプログラミング
      3. 28.3 プロキシの説明
      4. 28.4 プロキシのユースケース
      5. 28.5 プロキシ API の設計
      6. 28.6 FAQ: プロキシ
      7. 28.7 リファレンス: プロキシ API
      8. 28.8 まとめ
      9. 28.9 参考文献
    4. 29. ECMAScript 6 のコーディングスタイルのヒント
    5. 30. ES6 の新機能の概要
      1. 30.1 ES6 機能のカテゴリ
      2. 30.2 新しい数値と Math 機能
      3. 30.3 新しい文字列機能
      4. 30.4 シンボル
      5. 30.5 テンプレートリテラル
      6. 30.6 変数とスコープ
      7. 30.7 分割代入
      8. 30.8 パラメータ処理
      9. 30.9 ECMAScript 6 で呼び出し可能なエンティティ
      10. 30.10 アロー関数
      11. 30.11 クラス以外の新しい OOP 機能
      12. 30.12 クラス
      13. 30.13 モジュール
      14. 30.14 for-of ループ
      15. 30.15 新しい配列機能
      16. 30.16 マップとセット
      17. 30.17 型付き配列
      18. 30.18 イテラブルとイテレーター
      19. 30.19 ジェネレーター
      20. 30.20 新しい正規表現機能
      21. 30.21 非同期プログラミングのための Promise
      22. 30.22 プロキシによるメタプログラミング
  7. 注記
© 2015 - 2018 Axel Rauschmayer (表紙 Fran Caye)
この本は、愛と人生について多くのことを教えてくれた、不可能な少女に捧げられています。