JavaScript 言語とプラットフォームについて説明する。具体的にはそれぞれ ECMAScript と HTML5 を指す。 この版では、サーバサイドJavaScript、jQuery ライブラリ、HTML5 API の技術が追加されている。
JavaScript でできる例を打ち込んでみた。エラーが必ず起きるのだが、 これは手の打ちまちがいだった。恥ずかしいなあ。 ローン計算機がそれだ。
まず、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 キーワードを使うのがより適切である。
null
と undefined
の意味の違いと使い分けについて述べられている。
意図的な空値には、null
を使うこと。undefined
はある種エラー的な値である。
JavaScript の型変換は Basic に似て、いい意味では柔軟だが、悪い意味では節操がない。
型を明示的に指定するには、
たとえば、Number("3"), String(false), Boolean([]), Object(3)
などの書き方がある。
数字を文字列に変換するには toString()
メソッドが使える。
また、toFixed(), toExpnentail(), toPrecision()
などもある。
JavaScript にはブロックスコープはない。関数スコープを使っている。
演算子で気になったのは 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;
例外処理を実装してみた。
with 文がある。Pascal ではこのような使い方ができたように思う。
debugger 文がある。C 言語での assert() 関数に通じるところがある。
"use strict" ディレクティブがある。これは、Perl などから影響をうけたものだろう。
オブジェクトの定義や活用が述べられている。ある変数 book が定義されているかいないか、 もし定義されていれば book.subtitle が定義されているか、定義されていれば book.subtitle.length が得られるか、 これらを調べたいときにはこうする。
var len = book && book.subtitle && book.subtitle.length;
なるほど、という感じである。
7.9 で ECMAScript 5 の配列メソッドが紹介されているのが目を引く。 これだけ見ると、Haskell か何かの関数型言語を見ているようだ。 これを含めて、配列を練習している。
これを含めて、関数を練習している。
これを含めて、クラスとモジュールを練習している。
この内容を含めて、正規表現のページで使っている。
これを含めて、サブセットと拡張のページで使っている。
この内容を含めて、サーバーサイド JavaScript のページに書いた。
この内容を含めて、Web ブラウザに組み込まれた JavaScriptのページで使っている。
この内容を含めて、Window オブジェクトのページで使っている。
この内容を含めて、 ドキュメントの制御のページで使っている。 このページでは、非推奨となった document.write や document.writeln の代わりに、 insertAdjacentHTML を使う方法を併せて示す。
この内容を含めて、CSS の制御のページで使っている。
この内容を含めて、イベント処理のページで使っている。
この内容を含めて、HTTP の制御のページで使っている。
この内容を含めて、jQuery ライブラリのページで使っている。 ただ、もう jQuery は流行らないだろうから、あまり力を入れて記述する気にはなれない。
この内容を含めて、クライアントサイドストレージのページで使っている。 実際にはクッキーなどの技術である。
この内容を含めて、 メディアとグラフィックの制御のページで使っている。
この内容を含めて、 HTML5 API のページで使っている。
誤植は1個所見つかった。p.384 下から 10 行目、Elements オブジェク
とあるが、
正しくはElements オブジェクトだ。
書 名 | JavaScript 第6版 |
著 者 | David Flanagan |
訳 者 | 村上 列 |
発行日 | 2012 年 8 月 15 日 |
発行所 | オライリー・ジャパン |
発売元 | オーム社 |
定 価 | 4200円(本体) |
サイズ | A5 版変形 821 ページ |
ISBN | 978-3-87311-573-3 |
その他 | 越谷市立図書館で借りて読む |
まりんきょ学問所 > 読んだ本の記録 > David Flanagan:JavaScript 第6版