関連サイト
本書の関連ページが用意されています。
内容紹介
◆本書の「第1部 基本文法」では、JavaScriptの文法と機能について、実際の利用方法を示しながら解説しています。また「第2部 ユースケース」では、小さなアプリケーションを例にあげながら、JavaScriptの現実の開発での使い方にも言及しています。
本書は、プログラミング言語のリファレンスのようにJavaScriptのすべての機能を解説してはいません。ECMAScript 2015以降の新しい書き方を中心に、既存のコードに頻出する古い書き方を含めて解説しています。
JavaScriptは激しく変化している言語です。このような変化に対応できる基礎を身に付けられるよう、単に書き方を解説するのではなく、プログラミングの現場で直面する問題を自分自身で解決するのに必要な調査方法についても焦点を当てています。
初版からの変更点を次に示します。
・ ECMAScriptの新しいバージョンであるES2020、ES2021、ES2022に対応した
・ 新しいECMAScriptの機能によって、使う必要がなくなった機能は非推奨へと変更した
・ 文字では想像しにくいビット演算、非同期処理などに図を追加した
・ PromiseとAsync Functionを非同期の処理の中心として書き直した
・ 一方で、エラーファーストコールバックは非同期処理としてはメインではなくなった
・ Array#includesという表記は、Private Classs Fields(#field)と記号が被るため廃止した
・ Node.jsでもECMAScript Modulesを使うようになり、CommonJSはメインではなくなった
・ Node.jsが12から18までアップデートし、npmは6から8までアップデート、各種ライブラリも最新にアップデートした
・ 読者からのフィードバックを受けて、全体をよりわかりやすく読みやすくなるように書き直した
書誌情報
- 著者: azu, Suguru Inatomi
- 発行日: 2023-07-21 (紙書籍版発行日: 2023-07-21)
- 最終更新日: 2024-05-27
- バージョン: 1.0.0
- ページ数: 508ページ(PDF換算)
- 対応フォーマット: PDF, EPUB
- 出版社: アスキードワンゴ
対象読者
著者について
azu
ISO/IEC JTC 1/SC 22/ECMAScript Ad Hoc委員会エキスパートでECMAScript、JSONの仕様に関わる。2011年にJSer.infoを立ち上げ、継続的にJavaScriptの情報を発信している。ライフワークとしてオープンソースへのコントリビューションをしている。
Twitter: https://twitter.com/azu_re
GitHub: https://github.com/azu
Suguru Inatomi
長崎生まれ福岡育ち。2016年よりAngular日本ユーザー会の代表を務める。2018年に日本で一人目のGoogle Developers Expert for Angularに認定される。日々の仕事の傍ら、AngularをはじめとするOSSへのコントリビューションや翻訳、登壇、イベントの主催などの活動を続けている。
Twitter: https://twitter.com/laco2net
GitHub: https://github.com/lacolaco
目次
はじめに
著者紹介
第1部 基本文法
第1章 JavaScriptとは
- 1.1 JavaScriptとECMAScript
- 1.2 JavaScriptってどのような言語?
第2章 コメント
- 2.1 一行コメント
- 2.2 複数行コメント
- 2.3 HTML-likeコメント
- 2.4 まとめ
第3章 変数と宣言
- 3.1 const
- 3.2 let
- 3.3 var
- 3.4 変数名に使える名前のルール
- 3.5 まとめ
第4章 値の評価と表示
- 4.1 この書籍で利用するブラウザ
- 4.2 ブラウザでJavaScriptを実行する
- 4.3 Console API
- 4.4 ウェブ版の書籍でコードを実行する
- 4.5 コードの評価とエラー
- 4.6 まとめ
第5章 データ型とリテラル
- 5.1 データ型
- 5.2 リテラル
- 5.3 プリミティブ型とオブジェクト
- 5.4 まとめ
第6章 演算子
- 6.1 二項演算子
- 6.2 単項演算子(算術)
- 6.3 比較演算子
- 6.4 ビット演算子
- 6.5 代入演算子(=)
- 6.6 論理演算子
- 6.7 Nullish coalescing演算子(??)
- 6.8 条件(三項)演算子(?と:)
- 6.9 カンマ演算子(,)
- 6.10 まとめ
第7章 暗黙的な型変換
- 7.1 暗黙的な型変換とは
- 7.2 明示的な型変換
- 7.3 明示的な変換でも解決しないこと
- 7.4 まとめ
第8章 関数と宣言
- 8.1 関数宣言
- 8.2 関数の引数
- 8.3 可変長引数
- 8.4 関数の引数と分割代入
- 8.5 関数はオブジェクト
- 8.6 コールバック関数
- 8.7 メソッド
- 8.8 まとめ
第9章 文と式
- 9.1 式
- 9.2 文
- 9.3 関数宣言(文)と関数式
- 9.4 まとめ
第10章 条件分岐
- 10.1 if文
- 10.2 switch文
- 10.3 まとめ
第11章 ループと反復処理
- 11.1 while文
- 11.2 do-while文
- 11.3 for文
- 11.4 配列のforEachメソッド
- 11.5 break文
- 11.6 continue文
- 11.7 for…in文
- 11.8 for…of文
- 11.9 まとめ
第12章 オブジェクト
- 12.1 オブジェクトを作成する
- 12.2 プロパティへのアクセス
- 12.3 オブジェクトと分割代入
- 12.4 プロパティの追加
- 12.5 プロパティの存在を確認する
- 12.6 Optional chaining演算子(?.)
- 12.7 toStringメソッド
- 12.8 オブジェクトの静的メソッド
- 12.9 まとめ
第13章 プロトタイプオブジェクト
- 13.1 Objectはすべての元
- 13.2 プロトタイプメソッドとインスタンスメソッドの優先順位
- 13.3 とObject.hasOwn静的メソッドとin演算子との違い
- 13.4 オブジェクトの継承元を明示するObject.createメソッド
- 13.5 ArrayもObjectを継承している
- 13.6 Object.prototypeを継承しないオブジェクト
- 13.7 まとめ
第14章 配列
- 14.1 配列の作成とアクセス
- 14.2 オブジェクトが配列かどうかを判定する
- 14.3 配列と分割代入
- 14.4 配列から要素を検索
- 14.5 追加と削除
- 14.6 配列同士を結合
- 14.7 配列の展開
- 14.8 配列をフラット化
- 14.9 配列から要素を削除
- 14.10 破壊的なメソッドと非破壊的なメソッド
- 14.11 配列を反復処理するメソッド
- 14.12 メソッドチェーンと高階関数
- 14.13 まとめ
第15章 文字列
- 15.1 文字列を作成する
- 15.2 エスケープシーケンス
- 15.3 文字列を結合する
- 15.4 文字へのアクセス
- 15.5 文字列とは
- 15.6 文字列の分解と結合
- 15.7 文字列の長さ
- 15.8 文字列の比較
- 15.9 文字列の一部を取得
- 15.10 文字列の検索
- 15.11 正規表現オブジェクト
- 15.12 文字列の置換/削除
- 15.13 文字列の組み立て
- 15.14 まとめ
第16章 文字列とUnicode
- 16.1 Code Point
- 16.2 Code PointとCode Unitの違い
- 16.3 サロゲートペア
- 16.4 Code Pointを扱う
- 16.5 まとめ
第17章 ラッパーオブジェクト
- 17.1 プリミティブ型とラッパーオブジェクト
- 17.2 プリミティブ型の値からラッパーオブジェクトへの自動変換
- 17.3 まとめ
第18章 関数とスコープ
- 18.1 スコープとは
- 18.2 ブロックスコープ
- 18.3 スコープチェーン
- 18.4 グローバルスコープ
- 18.5 関数スコープとvarの巻き上げ
- 18.6 関数宣言と巻き上げ
- 18.7 クロージャー
- 18.8 メモリ管理の仕組み
- 18.9 まとめ
第19章 関数とthis
- 19.1 実行コンテキストとthis
- 19.2 関数とメソッドにおけるthis
- 19.3 Arrow Function以外の関数におけるthis
- 19.4 thisが問題となるパターン
- 19.5 Arrow Functionとthis
- 19.6 まとめ
第20章 クラス
- 20.1 クラスの定義
- 20.2 クラスのインスタンス化
- 20.3 クラスのプロトタイプメソッドの定義
- 20.4 クラスのアクセッサプロパティの定義
- 20.5 Publicクラスフィールド
- 20.6 Privateクラスフィールド
- 20.7 静的メソッド
- 20.8 プロトタイプに定義したメソッドとインスタンスに定義したメソッドの違い
- 20.9 プロトタイプオブジェクト
- 20.10 プロトタイプチェーン
- 20.11 継承
- 20.11 ビルトインオブジェクトの継承
- 20.13 まとめ
第21章 例外処理
- 21.1 try…catch構文
- 21.2 throw文
- 21.3 エラーオブジェクト
- 21.4 エラーとデバッグ
- 21.5 console.errorとスタックトレース
- 21.6 まとめ
第22章 非同期処理: Promise/Async Function
- 22.1 同期処理
- 22.2 非同期処理
- 22.3 非同期処理はメインスレッドで実行される
- 22.4 非同期処理と例外処理
- 22.5 Promise
- 22.6 Async Function
- 22.7 Async Functionと組み合わせ
- 22.8 まとめ
第23章 Map/Set
- 23.1 Map
- 23.2 Set
- 23.3 まとめ
第24章 JSON
- 24.1 JSONとは
- 24.2 JSONオブジェクト
- 24.3 JSONにシリアライズできないオブジェクト
- 24.4 toJSONメソッドを使ったシリアライズ
- 24.5 まとめ
第25章 Date
- 25.1 Dateオブジェクト
- 25.2 現実のユースケースとDate
- 25.3 まとめ
第26章 Math
- 26.1 Mathオブジェクト
- 26.2 乱数を生成する
- 26.3 数値の大小を比較する
- 26.4 数値を整数にする
- 26.5 まとめ
第27章 ECMAScriptモジュール
- 27.1 ECMAScriptモジュールの構文
- 27.2 ECMAScriptモジュールを実行する
第28章 ECMAScript
- 28.1 ECMAScriptのバージョンの歴史
- 28.2 Living StandardとなるECMAScript
- 28.3 仕様策定のプロセス
- 28.4 プロポーザルの機能を試す
- 28.5 仕様や策定プロセスを知る意味
- 28.6 まとめ
第1部のおわりに
第2部 ユースケース
第29章 アプリケーション開発の準備
- 29.1 Node.jsのインストール
- 29.2 npxコマンドによるnpmパッケージの実行
- 29.3 ローカルサーバーのセットアップ
- 29.4 まとめ
第30章 ユースケース: Ajax通信
- 30.1 エントリーポイント
- 30.2 HTTP通信
- 30.3 データを表示する
- 30.4 Promiseを活用する
第31章 ユースケース: Node.jsでCLIアプリケーション
- 31.1 Node.jsでHello World
- 31.2 コマンドライン引数を処理する
- 31.3 ファイルを読み込む
- 31.4 MarkdownをHTMLに変換する
- 31.5 ユニットテストを記述する
- 31.6 まとめ
第32章 ユースケース: Todoアプリケーション
- 32.1 エントリーポイント
- 32.2 アプリの構成要素
- 32.3 Todoアイテムの追加を実装する
- 32.4 イベントとモデル
- 32.5 Todoアイテムの更新と削除を実装する
- 32.6 Todoアプリのリファクタリング
- 32.7 Todoアプリのまとめ
付録A 参考リンク集
- A.1 開発を補助するツール
- A.2 JavaScriptの実行プラットフォーム