初めてのJavaScript 第3版

―ES2015以降の最新ウェブ開発

[cover photo]
TOPICS
Web , JavaScript
発行年月日
PRINT LENGTH
452
ISBN
978-4-87311-783-6
原書
Learning JavaScript, 3rd Edition
FORMAT
Print PDF EPUB
Ebook
3,520円
Ebookを購入する
Print
3,520円

ECMAScript 2015(ES2015)の入門書。シンプルな例題を多用しブラウザやnodeコマンドで試しながら新しいJavaScriptを楽しく学びます。従来バージョンを使用中のJavaScriptプログラマーにも、これからJavaScriptを習得したい入門者にも有用な情報が満載です。本書を読めば、letやconstによる宣言とスコープ、関数の基本と高度な使い方、オブジェクトとオブジェクト指向プログラミング、イテレータやジェネレータやプロキシといったES2015の新機能、非同期プログラミング、クライアントサイドのDOMやjQuery、サーバーサイドのNode.jsなど、JavaScriptの最新バージョンを使った開発に関する総括的な知識をバランスよく得られます。日本語版では、ES2016およびES2017の新機能の紹介も加えました。

翻訳者によるサポートページ

例題をブラウザで実行

関連ファイル

目次

訳者まえがき
まえがき

1章 JavaScriptの歴史と開発環境
    1.1 JavaScriptの簡単な歴史
    1.2 ES2015
    1.3 開発環境とツール
    1.4 ES2015での開発
    1.5 ES2015の機能
    1.6 Node.jsのインストールと実行
        1.6.1 Node.jsによるJavaScriptプログラムの実行
        1.6.2 nodeコマンド

2章 初めてのJavaScriptアプリ
    2.1 準備
    2.2 ツール
    2.3 コメント
    2.4 3つのファイルに分解
    2.5 jQuery
    2.6 簡単な図形の表示
    2.7 繰り返し
    2.8 クリックの検知
    2.9 Hello,World

3章 変数、定数、リテラル、データ型
    3.1 変数と定数
    3.2 変数か定数か
    3.3 識別子
    3.4 リテラル
    3.5 プリミティブ型とオブジェクト
    3.6 数値
    3.7 文字列
        3.7.1 エスケープ
        3.7.2 特殊文字
        3.7.3 テンプレートリテラル
        3.7.4 複数行にわたる文字列
        3.7.5 文字列としての数値
    3.8 論理値
    3.9 シンボル
    3.10 nullとundefined
    3.11 オブジェクト
    3.12 数値、文字列、論理値に対応するオブジェクト
    3.13 配列
    3.14 配列やオブジェクトの最終要素のあとの「,」
    3.15 日時
    3.16 正規表現
    3.17 マップ(Map)とセット(Set)
    3.18 データの型変換
        3.18.1 数値への変換
        3.18.2 文字列への変換
        3.18.3 論理値への変換
    3.19 まとめ

4章 制御フロー
    4.1 制御フロー入門
        4.1.1 whileループ
        4.1.2 ブロック文
        4.1.3 ホワイトスペース
        4.1.4 ヘルパー関数
        4.1.5 if...else文
        4.1.6 do...whileループ
        4.1.7 forループ
        4.1.8 if文
        4.1.9 すべてを統合
    4.2 JavaScriptの制御フロー文
        4.2.1 制御フローの例外
        4.2.2 if...else文のつなぎ方
        4.2.3 構文の詳細
        4.2.4 while文
        4.2.5 if...else文
        4.2.6 do...while文
        4.2.7 for文
        4.2.8 その他のforループパターン
        4.2.9 switch文
        4.2.10 for...inループ
        4.2.11 for...ofループ
    4.3 便利な制御フローパターン
        4.3.1 条件の入れ子を減らすためにcontinueを使う方法
        4.3.2 不要な計算を避けるためにbreakやreturnを使う方法
        4.3.3 ループ終了後のループ変数の値を使う方法
        4.3.4 リストを変更するときにチェックを降順に行う方法
    4.4 まとめ

5章 式と演算子
    5.1 演算子
    5.2 算術演算子
    5.3 演算子の優先順位
    5.4 比較演算子
        5.4.1 厳密等価演算子と等価演算子
        5.4.2 関係演算子
        5.4.3 数値を比較する際の留意点
    5.5 文字列連結
    5.6 論理演算子
        5.6.1 真と見なされる値と偽と見なされる値
        5.6.2 AND、OR、NOT
        5.6.3 短絡評価
        5.6.4 論理値ではない被演算子を用いた論理演算
    5.7 条件演算子
    5.8 カンマ演算子
    5.9 グループ化演算子
    5.10 ビット演算子
    5.11 typeof演算子
    5.12 void演算子
    5.13 代入演算子
    5.14 分割代入(デストラクチャリング)
    5.15 オブジェクト演算子と配列演算子
    5.16 テンプレートリテラル内の式
    5.17 式と制御フローのパターン
        5.17.1 if...else文を条件演算子を使った構文に変換
        5.17.2 if文の短絡論理ORへの変換
    5.18 まとめ

6章 関数
    6.1 戻り値
    6.2 呼び出しと参照
    6.3 関数の引数
        6.3.1 引数と関数
        6.3.2 引数の分割代入
        6.3.3 デフォルト引数
    6.4 オブジェクトのメソッド
        6.4.1 メソッドの省略記法
    6.5 this
    6.6 関数式と無名関数
    6.7 アロー関数
    6.8 call、apply、bind
    6.9 まとめ

7章 スコープ
    7.1 スコープと存在
    7.2 静的スコープと動的スコープ
    7.3 グローバルスコープ
    7.4 ブロックスコープ
    7.5 変数の隠蔽
    7.6 関数、クロージャ、静的スコープ
    7.7 IIFE.即座に実行される関数式
    7.8 関数のスコープと巻き上げ
    7.9 関数の巻き上げ
    7.10 TDZ(TemporalDeadZone)
    7.11 strictモード
    7.12 まとめ

8章 配列
    8.1 配列の基本
    8.2 配列要素の操作
        8.2.1 先頭あるいは最後の要素に対する操作
        8.2.2 複数要素の追加
        8.2.3 部分配列
        8.2.4 途中の要素の削除や途中への要素の追加
        8.2.5 配列内の要素の削除や置換
        8.2.6 配列を特定の値で埋める
        8.2.7 逆転とソート
    8.3 検索
    8.4 mapとfilter
    8.5 reduce
    8.6 配列関連のメソッドと削除された要素、定義されていない要素
    8.7 join
    8.8 まとめ

9章 オブジェクトとオブジェクト指向プログラミング
    9.1 プロパティの列挙
        9.1.1 for...in
        9.1.2 Object.keys
    9.2 オブジェクト指向プログラミング
        9.2.1 クラスとインスタンス生成
        9.2.2 アクセッサプロパティ
        9.2.3 クラスは関数
        9.2.4 プロトタイプ
        9.2.5 静的メソッド
        9.2.6 継承
        9.2.7 ポリモーフィズム
        9.2.8 プロパティの列挙(補足)
        9.2.9 文字列による表現
    9.3 多重継承、ミックスイン、インタフェース
    9.4 まとめ

10章 マップとセット
    10.1 マップ(Map)
    10.2 ウィークマップ(WeakMap)
    10.3 セット(Set)
    10.4 ウィークセット(WeakSet)
    10.5 オブジェクトかマップか

11章 例外とエラー処理
    11.1 Errorオブジェクト
    11.2 例外処理(try...catch)
    11.3 例外のスロー
    11.4 例外処理とコールスタック
    11.5 try...catch...finally
    11.6 例外処理は例外に限る

12章 イテレータとジェネレータ
    12.1 イテレータ
        12.1.1 配列とイテレータ
        12.1.2 イテレータのプロトコル
        12.1.3 無限の値を供給するイテレータ
    12.2 ジェネレータ
        12.2.1 yield式と双方向コミュニケーション
        12.2.2 ジェネレータとreturn
    12.3 まとめ

13章 関数のさまざまな利用方法
    13.1 サブルーチンとしての関数
    13.2 値を返すサブルーチンとしての関数
    13.3 純粋関数としての関数
    13.4 なぜ純粋関数か
        13.4.1 関数はオブジェクト
    13.5 IIFEと非同期のコード
    13.6 関数と変数
        13.6.1 関数を配列に記憶
        13.6.2 関数に関数を渡す
        13.6.3 関数から関数を返す
    13.7 再帰
    13.8 まとめ

14章 非同期プログラミング
    14.1 非同期処理のアナロジー
    14.2 コールバック
        14.2.1 setIntervalとclearInterval
        14.2.2 スコープと非同期の実行
        14.2.3 エラーファースト・コールバック
        14.2.4 コールバック地獄
    14.3 プロミス(Promise)
        14.3.1 プロミスの生成
        14.3.2 プロミスの利用
        14.3.3 プロミスの基本パターン
        14.3.4 プロミスのチェイニング
        14.3.5 Promise.allとPromise.race
        14.3.6 未確定の(unsettled)プロミスを防止する
    14.4 ジェネレータ
        14.4.1 ジェネレータランナー
        14.4.2 ジェネレータランナーの例外処理
    14.5 まとめ

15章 日時
    15.1 タイムゾーン、タイムスタンプ、UNIXエポック
    15.2 Dateオブジェクトの生成
    15.3 Moment.js
    15.4 JavaScriptによる日時関連の処理
    15.5 日時の生成
        15.5.1 サーバーにおける日時の生成
        15.5.2 ブラウザにおける日時の生成
    15.6 日時の受け渡し
    15.7 日時関連の文字列の表示
    15.8 月、日、曜日、時、分の取得
    15.9 日時の比較
    15.10 日時の演算
    15.11 相対的な日時の利用
    15.12 まとめ

16章 Math
    16.1 数値のフォーマット指定
        16.1.1 固定小数点数
        16.1.2 指数表現
        16.1.3 精度の指定
        16.1.4 基数の指定
        16.1.5 より細かなフォーマット指定
    16.2 定数
    16.3 代数関連の関数
        16.3.1 累乗
        16.3.2 対数関連の関数
        16.3.3 その他の関数
        16.3.4 擬似乱数発生
    16.4 三角関数
    16.5 双曲線関数

17章 正規表現
    17.1 単純なマッチングと置換
    17.2 正規表現の生成
    17.3 正規表現を用いた検索
    17.4 正規表現を用いた置換
    17.5 入力文字列の「消費」
    17.6 ORを表す正規表現
    17.7 正規表現によるマッチングの限界
    17.8 文字集合
    17.9 文字集合の略記法
    17.10 繰り返し
    17.11 メタ文字「.」とエスケープ
        17.11.1 ワイルドカード
    17.12 グループ化
    17.13 最長マッチ、最短マッチ
    17.14 後方参照
    17.15 グループの置換
    17.16 関数を用いた置換
    17.17 行頭や行末とのマッチング
    17.18 英単語の境界のマッチング
    17.19 先読み
    17.20 正規表現の動的な生成
    17.21 まとめ

18章 ウェブブラウザのJavaScript
    18.1 ES5かES2015か
    18.2 ドキュメントオブジェクトモデル(DOM)
    18.3 DOMのgetメソッド
    18.4 DOM要素に関するクエリー
    18.5 DOM要素の操作
    18.6 DOM要素の生成
    18.7 要素のスタイル
    18.8 data属性
    18.9 イベント
        18.9.1 イベントのキャプチャリングとバブリング
        18.9.2 イベントの種類
    18.10 Ajax
    18.11 まとめ

19章 jQuery
    19.1 jQueryと「$」
    19.2 jQueryの利用
    19.3 DOMのロードを待つ
    19.4 jQueryにラップされたDOM要素
    19.5 要素の操作
    19.6 jQueryオブジェクトのアンラップ
    19.7 Ajax
    19.8 まとめ

20章 Node.js
    20.1 Nodeの基本
    20.2 モジュール
    20.3 コアモジュール、ファイルモジュール、npmモジュール
    20.4 関数モジュールを使ったモジュールのカスタマイズ
    20.5 ファイルシステムへのアクセス
    20.6 プロセス
    20.7 OS
    20.8 子プロセス
    20.9 ストリーム
    20.10 ウェブサーバー
    20.11 まとめ

21章 オブジェクトのプロパティに関する詳細
    21.1 ゲッターとセッター
    21.2 プロパティのディスクリプタ
    21.3 オブジェクトの保護
    21.4 プロキシ
    21.5 まとめ

22章 JavaScript関連の情報源
    22.1 オンラインのドキュメント
    22.2 ニュースレター
    22.3 ブログおよびチュートリアル
    22.4 オープンソースプロジェクトへの貢献
    22.5 まとめ

付録A 予約語

付録B 演算子の優先順位

付録C 開発ツールのインストール
    C.1 ターミナル
    C.2 Gitのインストール
        C.2.1 macOS
        C.2.2 Windows
        C.2.3 Linux
    C.3 プロジェクトルート
    C.4 Gitを使ったバージョン管理
    C.5 npmによるパッケージ管理
    C.6 ビルドツールのGulp
    C.7 プロジェクトの構成
    C.8 トランスパイラー
    C.9 GulpでBabelを実行
    C.10 lint

付録D ES2016とES2017の動向
    D.1 ECMAScript2016
        D.1.1 累乗を表す演算子「**」
        D.1.2 Array.prototype.includes
    D.2 ECMAScript2017
        D.2.1 関数構文の末尾カンマの許容
        D.2.2 文字列用のメソッドpadStartとpadEnd
        D.2.3 Object.entriesおよびObject.values
        D.2.4 Object.getOwnPropertyDescriptors
        D.2.5 async/await

索引