読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

第11回 ECMA-262 Edition5.1読書会 発表してきました #ecma262

勉強会 ECMAScript

発表してきました。

第11回 ECMA-262 Edition5.1読書会 - ECMA262-Edition5.1読書会 | Doorkeeper

発表資料

return文、with文、switch文について発表しました。

github.com

細かいメモはありませんが、ツイートだけ残しておきます。

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文あたりはコピペが多くわかりにくいそうです。