関連サイト
本書の関連ページが用意されています。
内容紹介
舞台裏も他言語との違いも分かる! 関数型/オブジェクト指向/非同期の活用、モジュールによる拡張、落とし穴の回避などを解説[基本事項を中心に、中級~超上級レベルも学べます]
本書は、JavaScript標準であるECMAScript 6以降に対応した、完全かつ簡潔なガイドブックです。古いバージョンについては解説をスキップし、現在のはるかに強力なモダンJavaScriptの中核技術からスタートできます。近年、JavaScriptプログラマーの達人たちは、エラーが発生しやすい手法を回避するために、関数型/オブジェクト指向/非同期プログラミングを積極的に採用しています。そうした最新のテクニックやヒントを本書で習得し、開発生産性の飛躍的な向上をぜひ目指してください。Java、C#、C/C++など他言語の経験者、初中級者がモダンJavaScriptを本格的に学べる一冊です。◎本書は『Modern JavaScript for the Impatient』の翻訳書です。
書誌情報
- 著者: Cay S. Horstmann(著), 吉川 邦夫(訳)
- 発行日: 2020-12-21 (紙書籍版発行日: 2020-12-21)
- 最終更新日: 2020-12-21
- バージョン: 1.0.0
- ページ数: 384ページ(PDF版換算)
- 対応フォーマット: PDF, EPUB
- 出版社: インプレス
対象読者
JavaやCなど他言語ユーザーでこれからJavaScript を学ぶ方, JavaScript の初中級者の方
著者について
Cay S. Horstmann
米国サンノゼ州立大学のコンピュータサイエンス名誉教授。コンピュータ業界のカンファレンスで頻繁に講演を行っている。Javaテクノロジー/コミュニティのリーダーとして選考されたJavaチャンピオンである。著書に『Core Java, Volumes I & II, Eleventh Edition』(Pearson, 2018)、『Scala for the Impatient, Second Edition』(Addison-Wesley, 2016)、『Core Java SE 9 for the Impatient』(Addison-Wesley, 2017)などがある。
吉川 邦夫
1957年生まれ。ICU(国際基督教大学)卒。おもに制御系のプログラマとして、ソフトウェア開発に従事した後、翻訳家として独立。英文雑誌記事の和訳なども手掛ける。訳書は、Scott Meyersらによる「Effective」ソフトウェア開発シリーズ(アスキー、翔泳社)、『コンピュータアーキテクチャのエッセンス[第2版]』(翔泳社)、『Pythonデータ分析/機械学習のための基本コーディング! pandasライブラリ活用入門』(インプレス)など多数。
目次
まえがき
なぜこの本を書いたのか
- 謝辞
- ソースコードの入手方法
- 掲載したコード内の表記について
著者紹介
第1章 値と変数
- 1.1 JavaScriptを実行する
- 1.2 型とtypeof演算子
- 1.3 コメント
- 1.4 変数宣言
- 1.5 識別子
- 1.6 数
- 1.7 算術演算子
- 1.8 真偽値/1.9 nullとundefined
- 1.10 文字列リテラル
- 1.11 テンプレートリテラル
- 1.12 オブジェクト
- 1.13 オブジェクトリテラルの構文
- 1.14 配列
- 1.15 JSON
- 1.16 分割
- 1.17 高度な分割
- 演習問題
第2章 制御構造
- 2.1 式と文
- 2.2 セミコロンを入れる
- 2.3 分岐
- 2.4 真偽性
- 2.5 比較と等価判定
- 2.6 型の混ざった比較
- 2.7 ブール演算子
- 2.8 switch文
- 2.9 whileループとdoループ
- 2.10 各種のforループ
- 2.11 breakとcontinue
- 2.12 例外をキャッチする
- 演習問題
第3章 関数と関数型プログラミング
- 3.1 関数宣言
- 3.2 高階関数
- 3.3 関数リテラル
- 3.4 アロー関数
- 3.5 関数による配列処理
- 3.6 クロージャ
- 3.7 堅いオブジェクト
- 3.8 strictモード
- 3.9 引数の型をチェックする
- 3.10 引数の過多と過少
- 3.11 デフォルト引数/3.12 rest(...)パラメータと展開演算子
- 3.13 分割による名前付き引数のシミュレーション
- 3.14 ホイスティング(巻き上げ)
- 3.15 例外をthrow(送出)する
- 3.16 例外をcatch(キャッチ)する
- 3.17 finally節
- 演習問題
第4章 オブジェクト指向プログラミング
- 4.1 メソッド
- 4.2 プロトタイプ
- 4.3 コンストラクタ
- 4.4 クラス構文
- 4.5 ゲッターとセッター
- 4.6 インスタンスフィールドとプライベートメソッド
- 4.7 static(静的)なメソッドとフィールド
- 4.8 サブクラス
- 4.9 メソッドをオーバーライドする
- 4.10 サブクラスの構築
- 4.11 class式と匿名クラス
- 4.12 this参照
- 演習問題
第5章 数と日付/時刻
- 5.1 数値リテラル
- 5.2 数値のフォーマット
- 5.3 数値の解析
- 5.4 Numberの関数と定数
- 5.5 Mathの関数と定数
- 5.6 「ビッグ」整数
- 5.7 Dateの構築
- 5.8 Dateの関数とメソッド
- 5.9 日付時刻のフォーマット
- 演習問題
第6章 文字列と正規表現
- 6.1 文字列とコードポイントシーケンスの変換
- 6.2 部分文字列
- 6.3 その他の文字列メソッド
- 6.4 タグ付きテンプレートリテラル
- 6.5 無加工(raw)のテンプレートリテラル
- 6.6 正規表現
- 6.7 正規表現リテラル
- 6.8 フラグ
- 6.9 正規表現とUnicode
- 6.10 RegExpクラスのメソッド
- 6.11 グループ
- 6.12 文字列メソッドと正規表現
- 6.13 さらに正規表現の置換について
- 6.14 ちょっと珍しい機能
- 演習問題
第7章 配列とコレクション
- 7.1 配列を構築する
- 7.2 lengthプロパティとインデックスプロパティ
- 7.3 要素の削除と追加
- 7.4 その他の配列ミューテータ
- 7.5 要素を生成する
- 7.6 要素を探す
- 7.7 すべての要素を訪問する
- 7.8 疎な配列
- 7.9 リダクション(還元)
- 7.10 マップ
- 7.11 セット
- 7.12 弱いマップと弱いセット
- 7.13 型付き配列
- 7.14 配列バッファ
- 演習問題
第8章 国際化
- 8.1 ロケールという考え方
- 8.2 ロケールを指定する
- 8.3 数の整形
- 8.4 日付と時刻のローカライズ
- 8.5 照合(コレーション)
- 8.6 ロケールに関する、その他の文字列メソッド
- 8.7 複数形の規則とリスト
- 8.8 その他のロケール機能
- 演習問題
第9章 非同期プログラミング
- 9.1 JavaScriptにおける並行処理
- 9.2 プロミスを作る
- 9.3 即決するプロミス
- 9.4 プロミスの結果を取得する
- 9.5 プロミスの連鎖
- 9.6 失敗の処理
- 9.7 複数のプロミスを実行する
- 9.8 プロミスの競争/9.9 async関数
- 9.10 asyncの戻り値
- 9.11 コンカレントなawait
- 9.12 async関数での例外
- 演習問題
第10章 モジュール
- 10.1 モジュールのコンセプト/10.2 ECMAScriptのモジュール
- 10.3 デフォルトのインポート
- 10.4 名前付きインポート
- 10.5 動的なインポート
- 10.6 エクスポート
- 10.7 モジュールのパッケージング
- 演習問題
第11章 メタプログラミング
- 11.1 シンボル
- 11.2 シンボルプロパティによるカスタマイズ
- 11.3 プロパティの属性
- 11.4 プロパティの列挙
- 11.5 プロパティの存在をチェックする
- 11.6 オブジェクトの保護
- 11.7 オブジェクトを作成または更新する/11.8 プロトタイプのアクセスと更新
- 11.9 オブジェクトのクローンを作る
- 11.10 関数のプロパティ
- 11.11 引数の束縛とメソッドの呼び出し
- 11.12 プロキシ
- 11.13 Reflectクラス
- 11.14 プロキシの不変条件
- 演習問題
第12章 イテレータとジェネレータ
- 12.1 イテラブルな値
- 12.2 イテラブルを実装する
- 12.3 打ち切り可能なイテレータ
- 12.4 ジェネレータ
- 12.5 ネストしたyield
- 12.6 値を消費するジェネレータ
- 12.7 ジェネレータと非同期処理
- 12.8 非同期なジェネレータとイテレータ
- 演習問題
第13章 TypeScript入門
- 13.1 アノテーション
- 13.2 TypeScriptを実行する
- 13.3 型の用語
- 13.4 基本型
- 13.5 複合型
- 13.6 型推定
- 13.7 サブタイプ
- 13.8 クラス
- 13.9 構造的型付け
- 13.10 インターフェイス
- 13.11 インデックス付きプロパティ
- 13.12 複雑な関数パラメータ
- 13.13 ジェネリックプログラミング
- 演習問題