JavaScript第5版読書会#1

http://cotocoto.jp/event/2880


に参加してきた。

気になったコード

js> "hoge".charAt(1)
o
js> "hoge"[1]
o // 実装によってはうごかないらしい。
new String() vs. String()
js> typeof("hoge")
string
js> typeof(String("hoge"))
string
js> typeof(new String("hoge"))
object
js> typeof(3)
number
js> typeof(Number(3))
number
js> typeof(new Number(3))
object
文字列 -> 数値
js> "10" - 0
10
js> "10" + 0
100
Array.fill
js> new Array(10 + 1).join("*").split("")
[*,*,*,*,*,*,*,*,*,*]


new Array(n) n:数値 で作った配列は各要素が "undefined" となる。
で undefined にも代入できるからこれをうまくつくって Array.fill 的なことができないだろうか。結果だめっぽい。

js> undefined = "*"
*
js> undefined
*
//
js> typeof (new Array(10))[1]
undefined
基本型と参照型

文字列は immutable.


3.1.5.4 の表重要。

window.window.window
>>> window == window.window
true
>>> window == this.window
true
>>> window == window.self
true

window オブジェクトに自己参照として self & window プロパティがある。

delete 演算子の挙動がキモい

この辺もっと。

//FireBug で謎の挙動
>>> var a=1; delete a; a
a is not defined
>>> var x=1; delete x; x
1

//SpiderMonkey
js> var a=1;delete a;a
1
js> var x=1;delete x;x
1

JavaScript 第5版に書かれているのは下の挙動。
FireBug がおかしいっぽい。どちらにしろこの実装は気持ち悪い。

多重代入?

なんかこの辺の話題が出てたような気がしたので

>>> var [a, b] = [3, 4]
>>> a
3
>>> b
4

JavaScript 1.6 からだったかな。

注意

コードの先頭の
js> が spidermonkey 1.7で、
>>> が FireBug で試した。

感想

  • やっぱり PCがないときつい。その場で試したい。なんとしても手に入れないと。
  • 他の言語の話になるとさっぱりわからない。もっと他の言語も学ばなければ。特に P*P。
  • もっと色な人とからみたかった。 Twitter 検索の人と話せたのはうれしかった。

参考


とりあえず、こんなところ。また思い出したら追記するかもしれない。
最後に こんな素晴らしいイベントを企画、開催していただいた Kanasan さんありがとうございました。また参加すると思います。



ふぉくすけステッカー。


http://del.icio.us/higeorange/js:reading に関連ページをまとめるつもり。

追記

Array.fill 良く考えると1文字しかできないのね。やっぱループで回すしかないのかなぁ。