by shigemk2

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

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

概要

今日は第12条 12.12節「ラベル付き文」から12.15節「デバッグ文」まで。発表者は僕です。

ecma262reading.doorkeeper.jp

資料

github.com

リポジトリ名はECMA_262_11ですが、第11回の資料(のつもり)だったからだと思います。12回になるとは思いませんでしたが。

気づき。

  • with文とcatchが、内容が大体一緒。
  • return文とthrow文が、内容が大体一緒。でも、return文はfunctionの中でしか使えない(文法上は誤りで、エラーハンドリングは各実装に任せる)のに対し、throw文はfunctionの中でしか使えないという制約がない。あと、return文はreturn単体で使えるのに対し、throw文はthrow単体では使えない。
  • ちょくちょく出てくる(type, value, target)というタプルのようなオブジェクトの中身は8.9を参考のこと。
  • 具象メソッドについては、10.2.1を参考のこと。
  • withやcatchのLexicalEnvironmentについては、テストコードを参考のこと。

こんな感じ。catchの中で再定義された変数については、ブロックの中でしか使えない。tryはそうじゃない。レキシカル環境とは、一時的なスコープのこと。oldEnvにデータを一時的に退避させ、ブロックから抜けたらoldEnvを復活させる。

description: "catch doesn't change declaration scope - var initializer in catch with same name as catch parameter changes parameter",

test: function testcase() {
  foo = "prior to throw";
  try {
    throw new Error();
  }
  catch (foo) {
    var foo = "initializer in catch";
  }
 return foo === "prior to throw";
  
 }
});
  • Linuxのカーネルとグラフィックボードの関係で、Linuxマシンをプロジェクターにつなげるとカーネルパニックでマシンが再起動することがある
  • にこまきは王道にして至高

テストコード

es5conform.codeplex.com

書籍

ECMA-262 Edition 5.1を読む

ECMA-262 Edition 5.1を読む