発表してきました。
第11回 ECMA-262 Edition5.1読書会 - ECMA262-Edition5.1読書会 | Doorkeeper
発表資料
return文、with文、switch文について発表しました。
細かいメモはありませんが、ツイートだけ残しておきます。
メモ ecma仕様書のざっくりとした歴史とuse strict pic.twitter.com/7NoljGMv3C
— 炭鉱ハッカー しげまーくつー (@shigemk2) 2015, 3月 26
メモ ecmaのwithとレキシカル環境 pic.twitter.com/GAqGneDY9T
— 炭鉱ハッカー しげまーくつー (@shigemk2) 2015, 3月 26
メモ ecmaに出てくる大文字の意味 pic.twitter.com/ZaC32gSFHc
— 炭鉱ハッカー しげまーくつー (@shigemk2) 2015, 3月 26
R
MLより。
Completion仕様書型のオブジェクトです。正しい順番は (type, value, target) のタプルになります。
タプルですね。8.9あたりに仕様があります。 typeはnormalとかreturnなどの値が入り、valueは実際にプログラマが見る部分、targetはラベルが入り、その他の場合はempty。このタプルはちょくちょく出てくるので、覚えておくとよいでしょう。
中途完了
returnとかbreakとか、プログラムが上から下へ流れない状態のこと。
レキシカル環境
MLより。
ES5.1では、with文のほかにcatch節でもレキシカル環境が作られます。
provideThis
MLより。
with文の説明のために追加されているフラグ
GetValue
MLより。
なんでわざわざいちいち GetValue をしているのかと言うと、宣言されていない変数を参照した時のエラーReferenceError をreturn 文の箇所で出したいためなんですね。
これがないと、returnした先で変数を使うところでエラーが発生する可能性があるので どこの部分のコードが問題だったのか、よくわからなくなってしまいます。
exprRefを引数にGetValue関数を通して実際の値を取り出している。僕の中でモナドのような理解です。exprRefをそのままreturnすると、未定義の変数が返ってくるというよくわからない状況になるそうです。
switchのopt
optはoptionalで、省略できる。なので、以下のようなプログラムも可能。
var a = 11; switch(a % 4) { default: console.log("other"); break; }
なお、defaultは省略出来ないし、2つ書くことも出来ない。
喋った感想
もうなにがなんだかわからない感じでした。特にswitch文。先に実装して後でルールを決めたような言語仕様になっているらしく、switch文あたりはコピペが多くわかりにくいそうです。