JavaScript 第3版 読了

読んだのはずいぶん前だけど、まとめを書くのを忘れてた。5版はまあ必要になったら。

JavaScript

JavaScript


会社に転がってたのを読了。
といっても、第1部の「コアJavaScript」をざーっと読んだくらい。第2部の「クライアントサイドjavaScript」は書いてる内容が古過ぎてまじめに読む気になれませんでした。
以下、メモ。

4.3 変数のスコープ

関数ベースのスコープは感覚をすぐに忘れちゃう気がする。

5.2.4 演算子の結合順位

w = x = y = z

w = (x = (y = z))

と同意。

関係ないけど、Pythonだと

In [7]: 2 < 4
Out[7]: True

In [8]: 2 < 4 < 0
Out[8]: False

In [10]: 2 < 4 < 9 < 11
Out[10]: True

みたいな書き方ができると今日、知りました。あんまり使うシーンが想像できないけど。

7.4 関数の引数:Argumentsオブジェクト

現在実行中の関数を参照するには、

arguments.callee

現在実行中の関数を呼び出した関数を参照するには、

arguments.caller.callee
function funcname(f){
    var s = f.toString().match(/function (?w*)/)[1];
    return ((s==null) || (s.length == 0))? "anonymous" : s;
}

function stacktrace() {
    var s = '';
    for (var a = arguments.caller; a != null; a = a.caller) {
        s += funcname(a.callee) + '?n';
        if (a.caller == a) break;
    }
}

11.1 データ型の自動変換

文字列 数値 論理値 オブジェクト
空でない文字列 - 文字列の数値または NaN true String オブジェクト
空の文字列 - 0 false String オブジェクト
0 "0" - false Number オブジェクト
NaN "NaN" - false Number オブジェクト
無限大 "Infinity" - true Number オブジェクト
負の無限大 "-Infinity" - true Number オブジェクト
そのほかの数値 数字に対応する文字列 - true Number オブジェクト
true "true" 1 - Boolean オブジェクト
fale "false" 0 - Boolean オブジェクト
オブジェクト toString() valueOf() または toString() または NaN true -
配列 カンマで区切られた要素のリスト 要素が一つだけでその値が数値に変換可能なら数値、それ以外ならNaN null以外ならtrue -
関数 処理系依存の関数リスト NaN true -
null "null" 0 false Error
未定義値 "undefined" NaN false Error

JavaScript ことはじめ
8 型 (Types)

12.2.1.2 タグ

HTMLパーサは""という文字列を見つけると終了タグだと判断する。
ので、

"</" + "script>"

と書く。