catch

try / catch (JavaScript)

メモ

[1] Hawk's W3 Laboratory : JavaScript Notes : JavaScript 深層 : スコープに関するその他の話題 ( 版) <http://web.archive.org/web/20061018193413/www.hawk.34sp.com/stdpls/jsnotes/jssinso/06_scope3.html>

これは catch 節の開始時に e をプロパティとして持つオブジェクトが新規に作成され、スコープチェーンの先頭に加えられるからです。これによって、この例の "e" のような、例外処理のためだけの識別子が外側のスコープを汚染することが無くなります。だから次のコードはエラーになります。

エラーになる……はずなのですが、実はIEの実装は手抜きで、catch内でも直前のスコープをそのまま使ってしまい、 e は直前の変数オブジェクトのプロパティとして扱われます。だからIEでこの例を実行した場合、普通に参照できてしまいます。

その他のOpera/Mozilla/KHTMLなどは仕様通りに動作します。

[2] XProc 2.0: An XML Pipeline Language () <https://www.w3.org/TR/2016/NOTE-xproc20-20160721/#p.try>