David Flanagan:JavaScript 第6版

作成日:2013-01-14
最終更新日:

概要

JavaScript 言語とプラットフォームについて説明する。具体的にはそれぞれ ECMAScript と HTML5 を指す。 この版では、サーバサイドJavaScript、jQuery ライブラリ、HTML5 API の技術が追加されている。

感想

1章 JavaScript の概要

JavaScript でできる例を打ち込んでみた。エラーが必ず起きるのだが、 これは手の打ちまちがいだった。恥ずかしいなあ。 ローン計算機がそれだ。

2章 型、値、変数

まず、Firefox を使うときの Firebug 拡張が目を引く。私は現在、Firefox ではなく Seamonkey を使っているので恩恵にはあずかれない。開発をするときには Firefox を使うことにする。

変数の初期化ではこんな書き方もできるとは知らなかった。


let points {               // 2つの要素を持つ配列
  {x:0, y:0},
  {x:1, y:1}
}:
let data = {
  trial1: [[1,2], [3,4]],
  trial2: [[2,3], [4,5]]
}:


なお、上記を書いた時点では var キーワードを使っていたが、モダン JavaScript の観点から let キーワードに変更した。 また、これら配列が変更されない場合は const キーワードを使うのがより適切である。

3章

nullundefined の意味の違いと使い分けについて述べられている。 意図的な空値には、null を使うこと。undefined はある種エラー的な値である。

JavaScript の型変換は Basic に似て、いい意味では柔軟だが、悪い意味では節操がない。

型を明示的に指定するには、 たとえば、Number("3"), String(false), Boolean([]), Object(3) などの書き方がある。

数字を文字列に変換するには toString() メソッドが使える。 また、toFixed(), toExpnentail(), toPrecision() などもある。

JavaScript にはブロックスコープはない。関数スコープを使っている。

4 章 式と演算子

演算子で気になったのは in 演算子である。 これは、本書 p.78 によれば、左側の値が右側のオブジェクトのプロパティ名であれば true を返 す演算子である。 let point = {x:1, y:1}; と定義されていれば、 "x" in point ; は true であるし、"z" in point; は false である。 わたしがやってしまううっかりは、プロパティの値の一致と勘違いしてしまうものだ。 つまり、1 in point; を true だと思い込んでしまうのである。正しくは次の通りだ。

    let point = {x:1, y:1};
    console.log("x" in point);    // => true
    console.log("z" in point);    // => false
    console.log(1 in point);      // => false;

5 章 文

例外処理を実装してみた。

with 文がある。Pascal ではこのような使い方ができたように思う。

debugger 文がある。C 言語での assert() 関数に通じるところがある。

"use strict" ディレクティブがある。これは、Perl などから影響をうけたものだろう。

6 章 オブジェクト

オブジェクトの定義や活用が述べられている。ある変数 book が定義されているかいないか、 もし定義されていれば book.subtitle が定義されているか、定義されていれば book.subtitle.length が得られるか、 これらを調べたいときにはこうする。

var len = book && book.subtitle && book.subtitle.length;

なるほど、という感じである。

7 章 配列

7.9 で ECMAScript 5 の配列メソッドが紹介されているのが目を引く。 これだけ見ると、Haskell か何かの関数型言語を見ているようだ。 これを含めて、配列を練習している。

8 章 関数

これを含めて、関数を練習している。

9 章 クラスとモジュール

これを含めて、クラスとモジュールを練習している。

10 章 正規表現パターンマッチング

この内容を含めて、正規表現のページで使っている。

11 章 JavaScript のサブセットと拡張

これを含めて、サブセットと拡張のページで使っている。

12 章 サーバーサイド JavaScript

この内容を含めて、サーバーサイド JavaScript のページに書いた。

13 章 Web ブラウザに組み込まれた JavaScript

この内容を含めて、Web ブラウザに組み込まれた JavaScriptのページで使っている。

14 章 Window オブジェクト

この内容を含めて、Window オブジェクトのページで使っている。

15 章 ドキュメントの制御

この内容を含めて、 ドキュメントの制御のページで使っている。 このページでは、非推奨となった document.write や document.writeln の代わりに、 insertAdjacentHTML を使う方法を併せて示す。

16 章 CSS の制御

この内容を含めて、CSS の制御のページで使っている。

17 章 イベント処理

この内容を含めて、イベント処理のページで使っている。

18 章 HTTP の制御

この内容を含めて、HTTP の制御のページで使っている。

19 章 jQuery ライブラリ

この内容を含めて、jQuery ライブラリのページで使っている。 ただ、もう jQuery は流行らないだろうから、あまり力を入れて記述する気にはなれない。

20 章 クライアントサイドストレージ

この内容を含めて、クライアントサイドストレージのページで使っている。 実際にはクッキーなどの技術である。

21 章 メディアとグラフィックの制御

この内容を含めて、 メディアとグラフィックの制御のページで使っている。

22 章 HTML5 API

この内容を含めて、 HTML5 API のページで使っている。

誤植

誤植は1個所見つかった。p.384 下から 10 行目、Elements オブジェクとあるが、 正しくはElements オブジェクトだ。

書誌情報

書 名JavaScript 第6版
著 者David Flanagan
訳 者村上 列
発行日2012 年 8 月 15 日
発行所オライリー・ジャパン
発売元オーム社
定 価4200円(本体)
サイズA5 版変形 821 ページ
ISBN978-3-87311-573-3
その他越谷市立図書館で借りて読む

まりんきょ学問所読んだ本の記録 > David Flanagan:JavaScript 第6版


MARUYAMA Satosi