JavaScript 第7版

[cover photo]
オライリー・ジャパンで書籍を購入:
定価5,060円

Ebook Storeで電子版を購入:
価格4,048円

JavaScriptは最も多くのソフトウェア開発者に使用されているプログラミング言語です。JavaScriptを包括的に解説する本書は、第6版から大幅に加筆および更新し、全面改訂しました。 はじめにJavaScript言語仕様の基本的な構文と機能について豊富なサンプルコードを使って学習します。そしてJavaScript標準ライブラリを詳述し、Webブラウザで使われるクライアントサイドJavaScriptやNode.jsで使われるサーバサイドJavaScriptについてわかりやすく説明します。またNode形式と標準形式のモジュールの使い方、イテレータとジェネレータ、async/awaitやPromiseなどの非同期プログラミングの新しい構文、クラスの定義方法などを紹介し、さらにツール群や言語拡張機能、理解の難しいJavaScript特有の動きなどについても学ぶことができます。 WebプラットフォームやNode.jsの基礎となるJavaScript言語を根本から解説する本書は、JavaScriptをマスターして使いこなしたい開発者必携の一冊です。

関連書籍

Reactハンズオンラーニング 第2版
ハンズオンJavaScript
ハンズオンNode.js
プログラミングTypeScript

目次
本書への推薦の言葉
訳者まえがき
はじめに

1章 JavaScriptの概要
    1.1 JavaScriptを体験する
    1.2 Hello World
    1.3 JavaScriptコードを見てみよう
    1.4 例:文字頻度ヒストグラム
    1.5 まとめ

2章 字句構造
    2.1 JavaScriptプログラムのテキスト
    2.2 コメント
    2.3 リテラル
    2.4 識別子と予約語
        2.4.1 予約語
    2.5 Unicode
        2.5.1 Unicodeエスケープシーケンス
        2.5.2 Unicode正規化
    2.6 省略可能なセミコロン
    2.7 まとめ

3章 型、値、変数
    3.1 概要と定義
    3.2 数値
        3.2.1 整数リテラル
        3.2.2 浮動小数点リテラル
        3.2.3 JavaScriptでの算術演算
        3.2.4 2進浮動小数点と丸め誤差
        3.2.5 BigIntによる任意精度整数
        3.2.6 日付と時刻
    3.3 テキスト
        3.3.1 文字列リテラル
        3.3.2 文字列リテラルのエスケープシーケンス
        3.3.3 文字列の操作
        3.3.4 テンプレートリテラル
        3.3.5 パターンマッチング
    3.4 論理値
    3.5 nullと undefined
    3.6 Symbol
    3.7 グローバルオブジェクト
    3.8 不変な基本型値と可変なオブジェクト参照
    3.9 型の変換
        3.9.1 変換と比較
        3.9.2 明示的な型変換
        3.9.3 オブジェクトから基本型への変換
    3.10 変数の宣言と代入
        3.10.1 letとconstによる宣言
        3.10.2 varによる変数宣言
        3.10.3 分割代入
    3.11 まとめ

4章 式と演算子
    4.1 単項式
    4.2 オブジェクトと配列の初期化子
    4.3 関数定義式
    4.4 プロパティアクセス式
        4.4.1 条件付きプロパティアクセス
    4.5 呼び出し式
        4.5.1 条件付き呼び出し
    4.6 オブジェクト生成式
    4.7 演算子の概要
        4.7.1 オペランドの数
        4.7.2 オペランドと演算結果の型
        4.7.3 演算子の副作用
        4.7.4 演算子の優先順位
        4.7.5 演算子の結合性
        4.7.6 評価順序
    4.8 算術演算子
        4.8.1 +演算子
        4.8.2 単項算術演算子
        4.8.3 ビット演算子
    4.9 関係演算子
        4.9.1 等値演算子と不等演算子
        4.9.2 比較演算子
        4.9.3 in演算子
        4.9.4 instanceof演算子
    4.10 論理演算子
        4.10.1 論理積演算子(&&)
        4.10.2 論理和演算子(||)
        4.10.3 論理否定演算子(!)
    4.11 代入演算子
        4.11.1 算術演算を伴う代入演算子
    4.12 評価式
        4.12.1 eval()
        4.12.2 グローバルeval()
        4.12.3 strictモードでのeval()
    4.13 そのほかの演算子
        4.13.1 条件演算子(?:)
        4.13.2 ファーストデファインド演算子(??)
        4.13.3 typeof演算子
        4.13.4 delete演算子
        4.13.5 await演算子
        4.13.6 void演算子
        4.13.7 カンマ演算子
    4.14 まとめ

5章 文
    5.1 式文
    5.2 複合文と空文
    5.3 条件文
        5.3.1 if文
        5.3.2 elseif文
        5.3.3 switch文
    5.4 ループ文
        5.4.1 while文
        5.4.2 do/while文
        5.4.3 for文
        5.4.4 for/of文
        5.4.5 for/in文
    5.5 ジャンプ文
        5.5.1 ラベル文
        5.5.2 break文
        5.5.3 continue文
        5.5.4 return文
        5.5.5 yield文
        5.5.6 throw文
        5.5.7 try/catch/finally文
    5.6 そのほかの文
        5.6.1 with文
        5.6.2 debugger文
        5.6.3 "usestrict"文
    5.7 宣言文
        5.7.1 const、let、var文
        5.7.2 function文
        5.7.3 class文
        5.7.4 import文とexport文
    5.8 JavaScript文のまとめ

6章 オブジェクト
    6.1 オブジェクトの概要
    6.2 オブジェクトの生成
        6.2.1 オブジェクトリテラル
        6.2.2 newを使ったオブジェクトの生成
        6.2.3 プロトタイプ
        6.2.4 Object.create()
    6.3 プロパティの読み出しと書き込み
        6.3.1 連想配列としてのオブジェクト
        6.3.2 継承
        6.3.3 プロパティアクセスのエラー
    6.4 プロパティの削除
    6.5 プロパティのテスト
    6.6 オブジェクトプロパティの調査
        6.6.1 プロパティの列挙順序
    6.7 オブジェクトの拡張
    6.8 オブジェクトのシリアライズ
    6.9 オブジェクトのメソッド
        6.9.1 toString()メソッド
        6.9.2 toLocaleString()メソッド
        6.9.3 valueOf()メソッド
        6.9.4 toJSON()メソッド
    6.10 オブジェクトリテラルの拡張構文
        6.10.1 プロパティの簡略記法
        6.10.2 算出プロパティ名
        6.10.3 プロパティ名としてのSymbol
        6.10.4 スプレッド演算子
        6.10.5 メソッドの簡略記法
        6.10.6 プロパティのゲッターメソッドとセッターメソッド
    6.11 まとめ

7章 配列
    7.1 配列の生成
        7.1.1 配列リテラル
        7.1.2 スプレッド演算子
        7.1.3 Array()コンストラクタ
        7.1.4 Array.of()
        7.1.5 Array.from()
    7.2 配列の要素の読み書き
    7.3 疎な配列
    7.4 配列の長さ
    7.5 配列の要素の追加と削除
    7.6 配列の要素の巡回
    7.7 多次元配列
    7.8 配列のメソッド
        7.8.1 配列イテレータメソッド
        7.8.2 flat()メソッドとflatMap()メソッドによる配列のフラット化
        7.8.3 concat()メソッドによる配列の結合
        7.8.4 push()メソッド、pop()メソッド、shift()メソッド、unshift()メソッドによるスタック/キュー
        7.8.5 slice()メソッド、splice()メソッド、fill()メソッド、copyWithin()メソッドによるサブ配列操作
        7.8.6 配列の検索メソッドとソートメソッド
        7.8.7 配列から文字列への変換
        7.8.8 配列の静的関数
    7.9 配列のようなオブジェクト
    7.10 配列としての文字列
    7.11 まとめ

8章 関数
    8.1 関数の定義
        8.1.1 関数宣言文
        8.1.2 関数式
        8.1.3 アロー関数
        8.1.4 入れ子型の関数
    8.2 関数の呼び出し
        8.2.1 関数呼び出し
        8.2.2 メソッド呼び出し
        8.2.3 コンストラクタ呼び出し
        8.2.4 間接的な呼び出し
        8.2.5 暗黙的な関数呼び出し
    8.3 関数の引数とパラメータ
        8.3.1 省略可能なパラメータとデフォルト値
        8.3.2 残余パラメータと可変長の引数リスト
        8.3.3 Argumentsオブジェクト
        8.3.4 関数呼び出しのスプレッド演算子
        8.3.5 引数の分割代入
        8.3.6 引数の型
    8.4 値としての関数
        8.4.1 関数の独自プロパティの定義
    8.5 名前空間としての関数
    8.6 クロージャ
    8.7 関数のプロパティとメソッドとコンストラクタ
        8.7.1 lengthプロパティ
        8.7.2 nameプロパティ
        8.7.3 prototypeプロパティ
        8.7.4 call()メソッドとapply()メソッド
        8.7.5 bind()メソッド
        8.7.6 toString()メソッド
        8.7.7 Function()コンストラクタ
    8.8 関数型プログラミング
        8.8.1 関数による配列の処理
        8.8.2 高階関数
        8.8.3 関数の部分適用
        8.8.4 メモ化
    8.9 まとめ

9章 クラス
    9.1 クラスとプロトタイプ
    9.2 クラスとコンストラクタ
        9.2.1 コンストラクタ、クラスの同一性とinstanceof
        9.2.2 constructorプロパティ
    9.3 classキーワードによるクラス
        9.3.1 静的メソッド
        9.3.2 ゲッターメソッドやセッターメソッドなど、ほかのメソッド形式
        9.3.3 パブリックフィールドとプライベートフィールド、静的フィールド
        9.3.4 例:複素数クラス
    9.4 既存のクラスへのメソッドの追加
    9.5 サブクラス
        9.5.1 サブクラスとプロトタイプ
        9.5.2 extendsとsuperによるサブクラス化
        9.5.3 継承の代わりの委譲
        9.5.4 クラス階層と抽象クラス
    9.6 まとめ

10章 モジュール
    10.1 クラス、オブジェクト、クロージャによるモジュール
        10.1.1 クロージャによるモジュール化の自動化
    10.2 Nodeのモジュール
        10.2.1 Nodeのエクスポート
        10.2.2 Nodeのインポート
        10.2.3 Web上のNode形式のモジュール
    10.3 ES6のモジュール
        10.3.1 ES6のエクスポート
        10.3.2 ES6のインポート
        10.3.3 名前変更を伴うインポートとエクスポート
        10.3.4 再エクスポート
        10.3.5 Web上のJavaScriptモジュール
        10.3.6 import()による動的インポート
        10.3.7 import.meta.url
    10.4 まとめ

11章 JavaScript標準ライブラリ
    11.1 SetとMap
        11.1.1 Setクラス
        11.1.2 Mapクラス
        11.1.3 WeakMapとWeakSet
    11.2 型付き配列とバイナリデータ
        11.2.1 型付き配列の型
        11.2.2 型付き配列の作成
        11.2.3 型付き配列の使い方
        11.2.4 型付き配列のメソッドとプロパティ
        11.2.5 DataViewとエンディアン
    11.3 正規表現によるパターンマッチング
        11.3.1 正規表現の定義
        11.3.2 パターンマッチング用の文字列メソッド
        11.3.3 RegExpクラス
    11.4 日付と時刻
        11.4.1 タイムスタンプ
        11.4.2 日付の計算
        11.4.3 日付文字列の書式設定と解釈
    11.5 Errorクラス
    11.6 JSONのシリアライズと解釈
        11.6.1 JSONのカスタマイズ
    11.7 国際化API
        11.7.1 数字のフォーマット	11.7.2日付と時刻のフォーマット
        11.7.3 文字列の比較
    11.8 Console API
        11.8.1 コンソールへのフォーマット出力
    11.9 URL API
        11.9.1 レガシーなURL関数
    11.10 タイマー	11.11まとめ

12章 イテレータとジェネレータ
    12.1 イテレータの仕組み	12.2反復可能オブジェクトの実装
        12.2.1 イテレータを閉じる:return()メソッド
    12.3 ジェネレータ	12.3.1ジェネレータの例
        12.3.2 yield*と再帰的ジェネレータ
    12.4 ジェネレータの高度な機能
        12.4.1 ジェネレータ関数の戻り値
        12.4.2 yield式の値
        12.4.3 ジェネレータのreturn()メソッドとthrow()メソッド
        12.4.4 ジェネレータについての注意事項
    12.5 まとめ

13章 非同期JavaScript	13.1コールバックによる非同期プログラミング
        13.1.1 タイマー
        13.1.2 イベント
        13.1.3 ネットワークイベント
        13.1.4 Nodeのコールバックとイベント
    13.2 Promise
        13.2.1 Promiseの使い方
        13.2.2 Promiseチェーン
        13.2.3 Promiseの解決
        13.2.4 Promiseとエラーの詳細
        13.2.5 Promiseの並行処理
        13.2.6 Promiseの作成
        13.2.7 Promiseの逐次処理
    13.3 asyncとawait
        13.3.1 await式
        13.3.2 async関数
        13.3.3 複数のPromiseを待つ
        13.3.4 処理の詳細
    13.4 非同期な反復
        13.4.1 for/awaitループ
        13.4.2 非同期イテレータ
        13.4.3 非同期ジェネレータ
        13.4.4 非同期イテレータの実装
    13.5 まとめ

14章 メタプログラミング
    14.1 プロパティ属性
    14.2 オブジェクトの拡張性
    14.3 プロトタイプ属性
    14.4 ウェルノウンSymbol
        14.4.1 Symbol.iteratorと 
    Symbol.asyncIterator 
        14.4.2 Symbol.hasInstance
        14.4.3 Symbol.toStringTag
        14.4.4 Symbol.species
        14.4.5 Symbol.isConcatSpreadable
        14.4.6 パターンマッチング用のSymbol
        14.4.7 Symbol.toPrimitive
        14.4.8 Symbol.unscopables
    14.5 テンプレートタグ
    14.6 Reflect API
    14.7 Proxyオブジェクト
        14.7.1 Proxyの不変性
    14.8 まとめ

15章 Webブラウザ上のJavaScript
    15.1 Webプログラミングの基礎
        15.1.1 HTMLの<script>タグ中のJavaScript
        15.1.2 ドキュメントオブジェクトモデル
        15.1.3 Webブラウザのグローバルオブジェクト
        15.1.4 名前空間を共有するスクリプト
        15.1.5 JavaScriptプログラムの実行方法
        15.1.6 プログラムの入力と出力
        15.1.7 プログラムエラー
        15.1.8 Webのセキュリティモデル
    15.2 イベント
        15.2.1 イベントの分類
        15.2.2 イベントハンドラの登録
        15.2.3 イベントハンドラ呼び出し
        15.2.4 イベント伝播
        15.2.5 イベントのキャンセル
        15.2.6 カスタムイベントのディスパッチ
    15.3 ドキュメントの制御
        15.3.1 ドキュメント要素の選択
        15.3.2 ドキュメント構造と探索
        15.3.3 属性
        15.3.4 要素のコンテンツ
        15.3.5 ノードの作成、挿入、削除
        15.3.6 例:目次の作成
    15.4 CSSの制御
        15.4.1 CSSクラス
        15.4.2 インラインスタイル
        15.4.3 算出スタイル
        15.4.4 スタイルシートの制御
        15.4.5 CSSアニメーションとイベント
    15.5 ドキュメントの位置とスクロール
        15.5.1 ドキュメント座標とビューポート座標
        15.5.2 要素のジオメトリの取得
        15.5.3 位置から要素を取得
        15.5.4 スクロール
        15.5.5 ビューポートの大きさ、コンテンツの大きさ、スクロール位置
    15.6 Web Components
        15.6.1 Web Componentsの使い方
        15.6.2 HTMLテンプレート
        15.6.3 カスタム要素
        15.6.4 シャドウDOM
        15.6.5 例:

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]