ECMAScript の catch 節のスコープのお話
@itchyny はい。jsでもブロックスコープ的に動いてくれますぜ e=1;try{ throw 2 } catch(e) { console.log(e) } console.log(e);// 2, 1
2011-04-30 21:24:18...such as a FunctionDeclaration, a WithStatement, or a Catch clause of a TryStatement and a new Lexical Environment is created... oh...まじか.
2011-04-30 21:58:45catchがスコープ作るなら, xの方でReferenceErrorが起こらない説明が http://t.co/uK4qpRw via @ideone
2011-04-30 22:01:13@itchyny 分からないってのは catch がスコープ作るとして、http://t.co/uK4qpRw の x の方でReferenceError が起こらない理由が、ってことですか?
2011-04-30 23:14:25@itchyny 私も catch がスコープっていうことからちょっとびびりました>< ちょっと調べてみた感じだと、レキシカル環境には LexicalEnvironment と VariableEnvironment の 2 種類があって catch が変えるのは前者のみみたい
2011-05-01 00:00:12@itchyny 関数に入ったときには、関数内の FunctionDeclaration と VariableStatement は全部評価されて VariableEnvironment に結び付けられるので、with や catch の中の var も関数全域で有効みたい
2011-05-01 00:02:30catch 節のスコープについて、というか ECMAScript のレキシカル環境について調べたことをまとめましたっ! http://t.co/vlnTGZi
2011-05-01 01:56:08